我有POSIXct對象的矢量:爲什麼紀元日期是正確的,但不能用作POSIXct對象的偏移量?
> dates <- seq(as.POSIXct("2004-01-01", tz="EST"), as.POSIXct("2004-01-02", tz="EST"), as.difftime(6, units="hours"))
> dates
[1] "2004-01-01 00:00:00 EST" "2004-01-01 06:00:00 EST"
[3] "2004-01-01 12:00:00 EST" "2004-01-01 18:00:00 EST"
[5] "2004-01-02 00:00:00 EST"
我創建epoch
變量用於定義UNIX epoch一個POSIXct對象:
> epoch <- strptime("1970-01-01 00:00:00", "%Y-%m-%d %H:%M:%S", tz="EST")
> class(epoch)
[1] "POSIXct" "POSIXt"
> epoch
[1] "1970-01-01 EST"
我然後循環通過dates
矢量並打印出值,從epoch
抵消:
> for (d in dates) { print(as.POSIXct(d, origin=epoch, tz="EST")) }
[1] "2004-01-01 05:00:00 EST"
[1] "2004-01-01 11:00:00 EST"
[1] "2004-01-01 17:00:00 EST"
[1] "2004-01-01 23:00:00 EST"
[1] "2004-01-02 05:00:00 EST"
似乎有一個五年,在dates
中的值與相對於epoch
的那些相同值的表示之間的小時偏移誤差。
EST和UTC之間有+5小時的差異,但我指定了epoch
的EST時區和tz
選項。打印出epoch
,似乎沒有時間信息,只有日期。
有沒有strptime
或as.POSIXct
的錯誤,還是我計算偏移或錯誤地生成epoch
?
的( - )五個小時在你的時代,UNIX新紀元是GMT不EST。爲什麼你甚至想這樣做? 'dates'已經是一個可敬的POSIXct/POSIXt對象。 – mdsumner 2012-01-06 00:09:12
在這裏,我將相對於EST的時代定義爲時代,而不是GMT。因此,抵消EST的日期不應該要求更正(除非我誤解「strptime」的工作原理)。我正在探索這個問題,我很好奇爲什麼我得到了錯誤的答案:http://stackoverflow.com/questions/8750075/for-loop-style-has-effect-on-class-coercion – 2012-01-06 00:14:32