gpt4 book ai didi

R 错误 : unknown timezone with as. POSIXct()

转载 作者:行者123 更新时间:2023-12-02 06:50:07 28 4
gpt4 key购买 nike

我正在尝试使用 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.POSIXlt.POSIXct(x, tz) 中:未知时区 '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而“Europe/London”确实出现在 zone.tab 文件中,而“BST”则没有。所以我认为 Europe/London 应该是一个有效的 tz 选项。这是正确的吗?

有人对我收到警告的原因以及指定的时区未分配给 as.POSIXct 对象的原因提出建议吗?

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

提前致谢

鸢尾花

最佳答案

我在 macOS High Sierra 10.13.1 上遇到了类似的问题。一旦我尝试对日期做任何事情,我就会收到以下错误。

> as.POSIXct("2017-10-01", format = "%Y-%m-%d")
[1] "2017-10-01 GMT"
Warning message:
In strptime(x, format, tz = tz) :
unknown timezone 'zone/tz/2017c.1.0/zoneinfo/Pacific/Auckland'

如果我将环境变量设置为我的时区并且我用正确的时区返回日期,警告就会消失。

> Sys.setenv(TZ = "Pacific/Auckland")
> as.POSIXct("2017-10-01")
[1] "2017-10-01 NZDT"

所以,每次我需要做一些与日期有关的事情时,我都在设置环境变量。

但是,我找到了this link谈论同一件事。 R Core Team 的 Peter Dalgaard 回复说这是 macOS 10.13 Beta 中的一个错误,需要 Apple 来解决。

我正在考虑将 Sys.setenv(TZ = "Pacific/Auckland") 放入 .Rprofile 中,以便在我每次启动 RStudio 时设置时区。我希望这会有所帮助。

这是一个link如果您想尝试我提到的 .Rprofile 方法,这可能会有用。

更新: 这似乎已在 R 3.4.3 中得到解决。您可以在 R news 中阅读更多相关信息.以下是发行说明的相关部分。

INSTALLATION on a UNIX-ALIKE

A workaround has been added for the changes in location of time-zone files in macOS 10.13 'High Sierra' and again in 10.13.1, so the default time zone is deduced correctly from the system setting when R is configured with --with-internal-tzcode (the default on macOS).

我可以确认新版本的 R 解决了日期/时间对象的问题。

> Sys.timezone()
[1] "Pacific/Auckland"
> Sys.time()
[1] "2017-12-30 16:22:32 NZDT"

关于R 错误 : unknown timezone with as. POSIXct(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47314121/

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