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

Pau*_*GET 49 timezone r date-arithmetic

如何更改R中的默认时区?我正在处理时间序列.我所有的时间序列都是以UTC时区定义的,但是如果我打印一个日期,它总是在CET/CEST时区完成.

Pau*_*GET 72

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

  • 在Mac上,当你重置R会话时,这似乎消失了并且又回到了"" (3认同)
  • @Jas,您可以将其放在`.Rprofile`文件中 (2认同)
  • 对于其他区域,您可以使用[此时区列表](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。我使用了 `Sys.setenv(TZ = "America/Sao_Paulo")` 并且工作得很好。 (2认同)
  • @Jas这是正确的,R会话不会(也不应该)保存进程环境。对于依赖保存/恢复会话的人来说,需要另一种方法。 (2认同)

yuk*_*yuk 12

请参阅有关更改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"
Run Code Online (Sandbox Code Playgroud)


Dir*_*tel 8

什么操作系统?

通常,请参阅help(Startup)您可以通过.Renviron及其站点范围变体设置值.

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

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


Ale*_*lex 6

我发现@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"
Run Code Online (Sandbox Code Playgroud)

因此,Renviron.site找到(对我来说)文件/usr/lib/R/etc/.

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

TZ="UTC"
Run Code Online (Sandbox Code Playgroud)

或类似的.