Current time in ISO 8601 format
as.POSIXlt
(and as.POSIXct
) are for input. Use either format
or strftime
for output. See ?strftime for details on format strings:
tm <- as.POSIXlt(Sys.time(), "UTC")
strftime(tm , "%Y-%m-%dT%H:%M:%S%z")
#[1] "2015-04-08T15:11:22+0000"
The third parameter of as.POSIXlt
, format
, is used when the first parameter is a string-like value that needs to be parsed. Since we are passing in a Date value from Sys.time
, the format
is ignored.
I don't think that the colon in the timezone output is requirement of the ISO 8601 format but I could be wrong on that point. The help page says the standard is POSIX 1003.1. May need to put in the colon with a regex substitution if needed.
After looking at http://dotat.at/tmp/ISO_8601-2004_E.pdf I see that there is no colon in the "basic" format" timezone representation, but there is one in the "extended format".
The package parsedate
recognizes and parses Dates in various formats, including all ISO 8601 Formats:
format_iso_8601(Sys.time())
# [1] "2017-09-01T10:59:22+00:00"