有没有办法提取时区或格式化datetime对象的时区部分,例如" + 530"而不是" IST"或"亚洲/加尔各答"?
(需要这个,因为它是javascript中使用的ISO 8601格式)
示例:
as.POSIXct(1499773898,tz="Asia/Kolkata",origin="1970-01-01")
[1] "2017-07-11 17:21:38 IST"
相反,我想在as.POSIXct中指定format参数,以便输出看起来像这样:
[1] "2017-07-11 17:21:38 +530"
或者能够以这种方式拉出时区偏移的函数:
timezone_offset("2017-07-11 17:21:38 IST")
[1] "+530"
lubridate或任何其他软件包是否有能力执行此操作?
答案 0 :(得分:0)
您可以同时使用format
,但请注意结果是字符串,不再是POSIXct对象。
x <- as.POSIXct(1499773898,tz="Asia/Kolkata",origin="1970-01-01")
“2017-07-11 17:21:38 IST”
例如,在ISO 8601中显示时间戳:
format(x, "%Y-%m-%dT%H:%M:%S%z")
“2017-07-11T17:21:38 + 0530”
例如,显示刚刚从UTC偏移:format(x, "%z")
“+ 0530”
请注意,对于R中的操作,这几乎没有什么后果,因为所有POSIXct对象都在内部存储为UTC中的数字;从1970-01-01 00:00:00开始的秒数。
要将ISO 8601中的POSIXct时间戳写入文件,您可以使用上述format
或fwrite
data.table
函数,默认情况下会这样做(请参阅dateTimeAs
参数)。