【发布时间】:2017-11-15 17:48:34
【问题描述】:
我正在尝试使用 as.POSIXct() 将 unix 纪元时间戳转换为日期时间对象
当我调用 as.POSIXct() 时,我需要指定时区(欧洲/伦敦或 UTC)。
如果我跑了
> t<-as.POSIXct(1445329330, tz="Europe/London", origin="1970-01-01")
> t
R 返回 “2015-10-20 09:22:10 BST” 警告信息: 1:在 as.POSIXlt.POSIXct(x, tz) 中:未知时区 'default/Europe/London' 2: 在 as.POSIXlt.POSIXct(x, tz) : unknown timezone 'default/Europe/London'
我已尝试指定 tz="BST",但这也会返回警告
Warning messages:
1: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'BST
'
2: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'default/Europe/London'
3: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'BST
'
4: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'default/Europe/London'
我已经按照Joshua Ulrich's post 查找了 zoneinfo/zone.tab,并且 zone.tab 文件中确实出现了“Europe/London”,而“BST”没有出现。所以我认为欧洲/伦敦应该是一个有效的 tz 选项。这是正确的吗?
是否有人对我收到警告的原因以及未将指定时区分配给 as.POSIXct 对象的原因提出建议?
应该注意的是,在将 MacOS 更新到 High Sierra 之前,我调用 as.POSIXct() 的脚本在没有警告的情况下运行。操作系统更新会导致这些警告吗?当我运行 Sys.timezone() 它返回 NA
在此先感谢
鸢尾花
【问题讨论】:
-
很奇怪,当我运行您的命令时,我没有收到任何警告消息。我正在使用 R 3.4.1。
-
R-3.3.1,没有警告。
-
R-3.4.2 如果我尝试将时区更改为“BST”,我会收到相同的警告。当我将时区更改为“mytime”时,我也会收到同样的警告。如果我在 this list that the tz is based on 上使用其他任何东西,即使它们已被弃用,我也没有问题。我认为 BST 不是一个选项? 我使用
Sys.setenv(TZ='MST')来设置tz。 -
我正在使用 R-3.2.0 - 在完成当前项目之前不愿意升级
-
我正在运行 MacOS High Sierra,R-3.4.2 出现此问题,但升级到 R-3.4.3 后没有问题