2011-06-16 40 views
32

我正在使用R的时间序列。我所有的时间序列都是在UTC时区中定义的,但是如果我打印日期,它总是在CET/CEST时区中完成。你知道我可以如何改变这个默认参数吗?如何更改R中的默认时区?

+0

您是否阅读过'?timezone'并尝试过其中的任何内容? – 2011-06-16 16:02:25

+0

我有一个类似的问题,需要一个快速的解决方案。我使用了Jupyter for R.它可能设置为UTC时区。 – user3624251 2017-01-27 09:08:41

回答

46

另一种方式来做到这一点,而不改变整个计算机的时间正在使用像这样的setenv命令:Sys.setenv(TZ='GMT')

+1

在Mac上,当您重置R会话时,这似乎消失并回到“” – Jas 2018-01-05 20:18:54

5

什么操作系统?

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

但是,您应该为您的机器整体设置此值,在Linux下可能会更改文件/etc/timezone,并且在Windows上您将设置系统范围的环境变量TZ

最后,如果你格式化日期和时间的显示显示CET/CEST,这可能已经被设置为系统默认的,你的问题其实是如何正确设置你的UTC时间在你的[R对象。

+0

我确实改变了我的Windows配置。而且我还必须像这样在R环境变量TZ中更改:'TZ =“UTC”'。 谢谢你的帮助。 – 2011-06-17 11:45:47

10

见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" 
2

我发现@ 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" 

或相似。

+0

这是一个非常棒的答案,用于在R中“永久”设置时区。但是我没有得到:为什么甚至显示这个消息?我的R:v3.4.2在macOS高Sierra。 – 2017-10-27 08:14:01

-1

- 改变整个操作系统时区是基本上只是为了改变编程算法的大锤。 - 更改启动文件不适合通过git共享代码。

是否有另一种方法在R会话的脚本运行时执行此操作?

+1

[请仅使用* Post answer *按钮才能得到实际答案](// meta.stackoverflow.com/q/92107)。如果您有**不同的问题,请点击[问问题](// stackoverflow.com/questions/ask)按钮。如果你有与这个完全相同的问题,当你有足够的信誉时,你可以[upvote the question](// stackoverflow.com/privileges/vote-up)或[add a bounty on it](// stackoverflow.com /帮助/奖金)。 – 2016-06-16 19:55:47

相关问题