gpt4 book ai didi

datetime - 将以毫秒为单位的unix秒转换为POSIXct/POSIXlt

转载 作者:行者123 更新时间:2023-12-03 13:31:32 27 4
gpt4 key购买 nike

在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的结果实际上是正确的。

另外,有没有一种方法可以在不指定来源的情况下进行转换?

谢谢

最佳答案

帮助页面实际上暗示了不同之处:

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)不返回原始输入。不幸的是,Brian D. Ripley似乎是唯一拥有所有详细信息的人。

最后,如果没有原点,您将无法做到。但是您可以定义使用纪元作为原点的包装器(如此处)或使用2000-01-01或...保持一致。

关于datetime - 将以毫秒为单位的unix秒转换为POSIXct/POSIXlt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com