我正在尝试使用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
非常感谢提前
光圈
答案 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'