2012-08-09 101 views
4

我有一個類似於Round a POSIX date (POSIXct) with base R functionality的問題,但是我希望能夠在第二天(00:00:00)的午夜時間總是將日期整數化。將POSIXct日期舍入到第二天

基本上,我想要一個相當於POSIX格式日期的ceiling的函數。與相關問題一樣,我正在編寫我自己的軟件包,而且我已經有了幾個軟件包依賴關係,因此我不想添加更多。有沒有一種簡單的方法來做到這一點在基地R?

+0

您將遇到時區和夏令時問題。如果你不需要時間組件,只需使用'Date'。 – 2012-08-09 17:52:41

+0

我在網上颳了POSIXct風格的時間戳,我試着將它們輪到第二天。我不知道'Date'格式是否適用於... – 2012-08-09 18:08:40

+0

所以,你有POSIXct風格的字符串...你不能只從字符串中去掉時間部分,轉換成'Date'並添加1結果? – 2012-08-09 18:11:03

回答

8

也許

trunc(x,"days") + 60*60*24 

> x <- as.POSIXct(Sys.time()) 
> x 
[1] "2012-08-09 18:40:08 BST" 
> trunc(x,"days")+ 60*60*24 
[1] "2012-08-10 BST" 
0

一個快速和骯髒的方法是轉換爲Date(這截斷時間),加1(這是Date日)再轉換回POSIX是在午夜UTC在第二天。正如@Joshua Ulrich指出的那樣,時區/夏令時問題可能會給您帶來不希望的結果:

as.POSIXct(as.Date(Sys.time())+1) 
[1] "2012-08-10 01:00:00 BST"