2013-04-16 81 views
4

我想將POSIXct舍入到相對於特定時區的日期。將POSIX日期和時間(posixct)舍入爲相對於時區的日期

如果我嘗試

round(as.POSIXct("2013-03-05 23:00:00 EST"), "day") 

它返回

2013-03-06 

這是有道理的,因爲當它23:00:00 EST在EST5EDT 2013年3月5日,它已經2013- 03-06 UTC。從邏輯上講,我想要做的是:

round(as.POSIXct("2013-03-05 23:00:00 EST"), "day", tz="EST5EDT") 

也就是說,「這一輪的日期和時間到最近的一天,相對於EST5EDT時區」。不幸的是,回合不需要時區參數。

回答

7

round一旦過了中午就會輪到第二天,這就是爲什麼我認爲你看到2013-03-06。我也有在調用tz參數明確設置爲as.POSIXct

觀察:

round(as.POSIXct("2013-03-05 11:00:00" , tz = "EST"), "day") 
[1] "2013-03-05 EST" 

然後一旦經過中午:

round(as.POSIXct("2013-03-05 12:00:00" , tz = "EST"), "day") 
[1] "2013-03-06 EST" 

format調用提取一天不如不帶tz參數的字符串。所以,你可以得到你原來的結果,而不時區

format(round(as.POSIXct("2013-03-05 12:00:00" , tz = "EST"), "day")) 
[1] "2013-03-06" 

如果你想輪在這一天的任何時間的那一天也許你想要的東西,而不是爲trunc

format(trunc(as.POSIXct("2013-03-05 12:00:00" , tz = "EST"), "day")) 
[1] "2013-03-05"