为什么在R中将unix时间戳转换为datetime对象时会看到差异?
> as.POSIXlt(1268736919, origin="1970-01-01", tz="America/New_York")
[1] "2010-03-16 06:55:19 EDT"
> as.POSIXct(1268736919, origin="1970-01-01", tz="America/New_York")
[1] "2010-03-16 11:55:19 EDT"
来自POSIXlt的结果实际上是正确的。
另外,有没有一种方法可以在不指定原点的情况下进行这种转换?
谢谢
发布于 2010-03-16 18:54:14
帮助页面实际上暗示了不同之处:
Value:
‘as.POSIXct’ and ‘as.POSIXlt’ return an object of the appropriate
class. If ‘tz’ was specified, ‘as.POSIXlt’ will give an
appropriate ‘"tzone"’ attribute.
这个东西很挑剔--我认为as.POSIXct
有一个隐式的TZ转换。考虑一下这点
R> print(as.numeric(as.POSIXct(as.POSIXlt(1268736919,
origin="1970-01-01"))), digits=10)
[1] 1268736919
R> print(as.numeric(as.POSIXct(1268736919, origin="1970-01-01")), digits=10)
[1] 1268758519
第二个(使用as.POSIXct
)不返回原始输入。不幸的是,布莱恩·D·里普利似乎是唯一一个知道这里所有细节的人。
最后,在没有原点的情况下,你无法做到这一点。但您可以定义使用纪元作为原点的包装器(如此处),或者使用2000-01-01或...只要保持一致即可。
https://stackoverflow.com/questions/2457129
复制