2011-06-16 44 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