首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将unix秒转换为POSIXct/POSIXlt

将unix秒转换为POSIXct/POSIXlt
EN

Stack Overflow用户
提问于 2010-03-17 02:40:15
回答 1查看 12.2K关注 0票数 18

为什么在R中将unix时间戳转换为datetime对象时会看到差异?

代码语言:javascript
运行
复制
> 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的结果实际上是正确的。

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-17 02:54:14

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

代码语言:javascript
运行
复制
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转换。考虑一下这点

代码语言:javascript
运行
复制
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或...只要保持一致即可。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2457129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档