四舍五入到R中最接近的小时的时间

四舍五入到R中最接近的小时的时间,r,datetime,timestamp,posixct,R,Datetime,Timestamp,Posixct,我有格式的数据 time <- c("16:53", "10:57", "11:58") time##示例时间 x格式用于向另一个方向移动(从日期时间到特定表示)。我不确定是否有部分日期时间的类,例如,仅由小时和分钟组成。类似于:as.POSIXlt(strtime(tt,format=“%H:%m”)+30*60)$hour?这怎么会是重复的?你真的不需要添加日期,如果你添加了strtime(x,%H:%m”)@eddi--Cool,但是,在夏令时轮班的日子里,有没有可能在特定时间给

我有格式的数据

time <-  c("16:53", "10:57", "11:58")
time
##示例时间

x
格式
用于向另一个方向移动(从日期时间到特定表示)。我不确定是否有部分日期时间的类,例如,仅由小时和分钟组成。类似于:
as.POSIXlt(strtime(tt,format=“%H:%m”)+30*60)$hour
?这怎么会是重复的?你真的不需要添加日期,如果你添加了
strtime(x,%H:%m”)
@eddi--Cool,但是,在夏令时轮班的日子里,有没有可能在特定时间给你带来麻烦呢??(我说这一天不重要,但正是因为这个原因,我选择了一个我认为没有任何地方有DLT转换的日期…)我不明白为什么会这样-我只是检查了一下,就我所知它工作正常。@eddi如果你在美国,试着将你的计算机系统日期设置为2013年3月10日(今年DST的开始),然后运行
轮(strtime(“1:31”,“H:%M”),“hours”)
。R返回“2013-03-10 03:00:00 PDT”
——这正是我想要避免的。谢谢Josh!我明白了为什么我以前在测试时没有看到差异,我使用了%M而不是%M,这是一个月的错误格式。你说得对,增加一个日期更安全。
## Example times
x <- c("16:53", "10:57", "11:58")

## POSIX*t objects need both date and time specified
## Here, the particular date doesn't matter -- just that there is one.
tt <- strptime(paste("2001-01-01", x), format="%Y-%m-%d %H:%M")

## Use round.Date to round, then format to format
format(round(tt, units="hours"), format="%H:%M")
# [1] "17:00" "11:00" "12:00"