R错误:带有as.POSIXct()的未知时区

时间:2017-11-15 17:48:34

标签: r datetime

我正在尝试使用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):未知时区'默认/欧洲/伦敦'     2:as as.POSIXlt.POSIXct(x,tz):未知时区'默认/欧洲/伦敦'

我已尝试指定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,并且“Europe / London”确实出现在zone.tab文件中,而“BST”没有。所以我认为欧洲/伦敦应该是一个有效的tz选择。这是对的吗?

有没有人建议我为什么会收到警告,以及为什么没有将指定的时区分配给as.POSIXct对象?

应该注意的是,在将MacOS更新为High Sierra之前,调用as.POSIXct()的脚本在没有警告的情况下运行。操作系统更新是否会导致这些警告?当我运行Sys.timezone()时,它返回NA

非常感谢提前

光圈

2 个答案:

答案 0 :(得分:1)

看起来您需要使用时区更新系统,即使它没有被使用。

我似乎无法将时区设置为NA,但如果我设置了我的环境,例如Sys.setenv(TZ='Twilight Zone'),或者the tz list上没有的任何内容我也会得到你做的同样的错误。

答案 1 :(得分:0)

查看输出结果实际上并没有发出关于“欧洲/伦敦”的警告,只是关于其他变体(&#39; BST&#39;&#39;默认/欧洲/伦敦&# 39)。

可能是以前命令的错误仍然存​​在吗?如果再次运行as.POSIXct(1445329330, tz="Europe/London", origin="1970-01-01"),甚至重新启动R?

,你会得到相同的结果吗?

即使使用正确的时区,我仍然会收到有关BST的错误

> as.POSIXct(1445329330, tz="BST", origin="1970-01-01")
[1] "2015-10-20 08:22:10 GMT"
Warning message:
In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'BST'
> as.POSIXct(1445329330, tz="Europe/London", origin="1970-01-01")
[1] "2015-10-20 09:22:10 BST"
Warning message:
In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'BST'