如何更改 R 中的默认时区?

Posted

技术标签:

【中文标题】如何更改 R 中的默认时区?【英文标题】:How to change the default time zone in R? 【发布时间】:2011-09-16 12:31:05 【问题描述】:

我正在处理时间序列。我所有的时间序列都是在 UTC 时区定义的,但是如果我打印一个日期,它总是在 CET/CEST 时区完成。

【问题讨论】:

您阅读过?timezone 并尝试过其中的任何内容吗? 我遇到了类似的问题,需要一个快速的解决方案。我将 Jupyter 用于 R。它可能是为 UTC 时区设置的。 【参考方案1】:

什么操作系统?

一般来说,请参阅 help(Startup),因为您可以通过 .Renviron 及其站点范围的变体设置值。

但是你可能应该为你的机器整体设置这个,在 Linux 下可能会改变文件 /etc/timezone,而在 Windows 上你需要设置一个系统范围的环境变量 TZ

最后,如果您的日期和时间的 格式化 显示显示 CET/CEST,这可能已经设置为系统默认值,而您的问题实际上是如何在 R 对象中正确设置 UTC 时间.

【讨论】:

我确实更改了我的 Windows 配置。而且我还必须像这样在 R 中更改 R 环境变量 TZ:TZ="UTC"。感谢您的帮助。【参考方案2】:

请参阅这篇关于在 R 中更改时区的好文章:

http://blog.revolutionanalytics.com/2009/06/converting-time-zones.html

很快(以防将来链接不可用):

# your time string
pb.txt <- "2009-06-03 19:30"
# convert it to R object for London time zone
pb.date <- as.POSIXct(pb.txt, tz="Europe/London")
# convert it to PDT time zone
format(pb.date, tz="America/Los_Angeles",usetz=TRUE)
[1] "2009-06-03 11:30:00 PDT"

# can be also done for many date at once
d <- c("2009-03-07 12:00", "2009-03-08 12:00", "2009-03-28 12:00", "2009-03-29 12:00", "2009-10-24 12:00", "2009-10-25 12:00", "2009-10-31 12:00", "2009-11-01 12:00")
t1 <- as.POSIXct(d,"America/Los_Angeles")
cbind(US=format(t1),UK=format(t1,tz="Europe/London"))

     US                    UK                   
[1,] "2009-03-07 12:00:00" "2009-03-07 20:00:00"
[2,] "2009-03-08 12:00:00" "2009-03-08 19:00:00"
[3,] "2009-03-28 12:00:00" "2009-03-28 19:00:00"
[4,] "2009-03-29 12:00:00" "2009-03-29 20:00:00"
[5,] "2009-10-24 12:00:00" "2009-10-24 20:00:00"
[6,] "2009-10-25 12:00:00" "2009-10-25 19:00:00"
[7,] "2009-10-31 12:00:00" "2009-10-31 19:00:00"
[8,] "2009-11-01 12:00:00" "2009-11-01 20:00:00"

【讨论】:

【参考方案3】:

在不改变整个计算机时间的情况下,另一种方法是使用 setenv 命令,如下所示:Sys.setenv(TZ='GMT')

【讨论】:

在 Mac 上,当您重置 R 会话时,这似乎会消失并回到“” 其他地区可以使用this timezone list。我使用了Sys.setenv(TZ = "America/Sao_Paulo"),效果很好。 @Jas 没错,R 会话不会(也不应该)保存进程环境。依赖保存/恢复会话的人需要另一种方法。【参考方案4】:

我发现@Dirk 的回答对 Ubuntu 非常有用,所以我想我会扩展它。

help(Startup)我们看到环境变量是由Renviron.site文件设置的:

除非在命令行中给出 --no-environ,否则 R 会搜索要处理的站点和用户文件以设置环境变量。站点文件名是环境变量R_ENVIRON所指向的文件名;如果未设置,则使用“R_HOME/etc/Renviron.site”

我们可以使用函数R.home() 找到R_HOME 的路径,在我的例子中返回:

> R.home()
[1] "/usr/lib/R"

因此,Renviron.site 文件(对我而言)在 /usr/lib/R/etc/ 中找到。

只需打开此文件,然后插入以下行:

TZ="UTC"

或类似的。

【讨论】:

这是“永久”在 R 中设置时区的绝佳答案。但我不明白:为什么它甚至显示此消息?我的 R:macOS High Sierra 上的 v3.4.2。

以上是关于如何更改 R 中的默认时区?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Fabric 中的时区? [复制]

如何更改 Python 日志记录中的时区?

如何更改 docker 容器中的时区?

如何更改 MySQL 数据库中的时区

如何更改 AWS Cloudwatch Event Cron 表达式中的时区?

我们如何动态更改 java rest api 响应中的时区?