Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
A new version 0.1.0 of RcppCCTZ arrived on CRAN this morning. It brings a number of new or updated things, starting with new upstream code from CCTZ as well as a few new utility functions.
CCTZ is a C++ library for translating between absolute and civil times using the rules of a time zone. In fact, it is two libraries. One for dealing with civil time: human-readable dates and times, and one for converting between between absolute and civil times via time zones. It requires only a proper C++11 compiler and the standard IANA time zone data base which standard Unix, Linux, OS X, … computers tend to have in /usr/share/zoneinfo
. RcppCCTZ connects this library to R by relying on Rcpp.
A nice example is the helloMoon()
function (based on an introductory example in the CCTZ documentation) showing the time when Neil Armstrong took a small step, relative to local time in New York and Sydney:
R> library(RcppCCTZ) R> helloMoon(verbose=TRUE) 1969-07-20 22:56:00 -0400 1969-07-21 12:56:00 +1000 New_York Sydney "1969-07-20 22:56:00 -0400" "1969-07-21 12:56:00 +1000" R>
The new formating and parsing functions are illustrated below with default arguments for format strings and timezones. All this can be customized as usual.
R> example(formatDatetime) frmtDtR> now <- Sys.time() frmtDtR> formatDatetime(now) # current (UTC) time, in full precision RFC3339 [1] "2016-12-12T13:21:03.866711+00:00" frmtDtR> formatDatetime(now, tgttzstr="America/New_York") # same but in NY [1] "2016-12-12T08:21:03.866711-05:00" frmtDtR> formatDatetime(now + 0:4) # vectorised [1] "2016-12-12T13:21:03.866711+00:00" "2016-12-12T13:21:04.866711+00:00" "2016-12-12T13:21:05.866711+00:00" [4] "2016-12-12T13:21:06.866711+00:00" "2016-12-12T13:21:07.866711+00:00" R> example(parseDatetime) prsDttR> ds <- getOption("digits.secs") prsDttR> options(digits.secs=6) # max value prsDttR> parseDatetime("2016-12-07 10:11:12", "%Y-%m-%d %H:%M:%S"); # full seconds [1] "2016-12-07 04:11:12 CST" prsDttR> parseDatetime("2016-12-07 10:11:12.123456", "%Y-%m-%d %H:%M:%E*S"); # fractional seconds [1] "2016-12-07 04:11:12.123456 CST" prsDttR> parseDatetime("2016-12-07T10:11:12.123456-00:00") ## default RFC3339 format [1] "2016-12-07 04:11:12.123456 CST" prsDttR> now <- trunc(Sys.time()) prsDttR> parseDatetime(formatDatetime(now + 0:4)) # vectorised [1] "2016-12-12 07:21:17 CST" "2016-12-12 07:21:18 CST" "2016-12-12 07:21:19 CST" [4] "2016-12-12 07:21:20 CST" "2016-12-12 07:21:21 CST" prsDttR> options(digits.secs=ds) R>
Changes in this version are summarized here:
Changes in version 0.1.0 (2016-12-11)
Synchronized with
CCTZ
upstream.New parsing and formating helpers for Datetime vectors
New parsing and formating helpers for (two)
double
vectors representing fullstd::chrono
nanosecond resolutionsUpdated documentation and examples.
We also have a diff to the previous version thanks to CRANberries. More details are at the RcppCCTZ page; code, issue tickets etc at the GitHub repository.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.