将POSIXct日期舍入到第二天

问题描述:

我有一个类似于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

也许

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" 

一个快速和肮脏的方法是转换为Date(这截断时间),加1(这是Date日)再转换回POSIX是在午夜UTC在第二天。正如@Joshua Ulrich指出的那样,时区/夏令时问题可能会给您带来不希望的结果:

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