2014-09-06 66 views
1

我想問將R宗師以下的評論:POSIXct R中的奇怪行爲

as.POSIXct( 「1998年5月11日09:35」,「%M /%d/%Y%H:%M」,TZ = 「EST」) - as.POSIXct( 「的1小時

1998年5月11日9時35分00秒EST」) 時差

應該不是它因爲日期是一樣的,所以是零?

謝謝。

+0

不在我的系統上:'as.POSixct(「05/11/1998 09:35」,「%m /%d /%Y%H:%M」,tz =「EST」) - as.POSixct 「1998-05-11 09:35:00 EST」)' '0秒的時差' – 2014-09-06 01:54:45

+2

@MatthewLundberg先嚐試'Sys.setenv(TZ =「UTC」)''。問題是在第二次調用中不提供'tz',並且OP期望「EST」自動被識別爲時區的值(並且可能也預計它與America/New_York相同) – GSee 2014-09-06 02:00:57

+0

You是正確的。我的時區是CST6CDT,因此現在是UTC-5。 – 2014-09-06 02:13:02

回答

2

根據?strptime(其?as.POSIXct指向)的format=參數應該是

的字符串。如果任何元素的時間分量爲 (非午夜),''%Y-%m-%d%H:%M:%S''格式'方法的缺省值爲 ' m-%d「',否則。如果設置了 '選項(「digits.secs」),則最多可以打印指定的數字 數秒。

時間"1998-05-11 09:35:00 EST"的格式爲"%Y-%m-%d %H:%M:%S %Z"。然而%Z只能用於輸出(見?strptime

如果您提供的tz=參數的第二個電話,它會如預期

> as.POSIXct("05/11/1998 09:35", "%m/%d/%Y %H:%M",tz="EST") - as.POSIXct("1998-05-11 09:35:00 EST", tz="EST") 
Time difference of 0 secs 

值得注意的是

'EST' is a time zone used in Canada _without_ daylight saving time, and not 
‘EST5EDT’ nor (Australian) Eastern Standard Time.) 

(參見?timezone