如何计算时钟需要打勾以完成一天的小时数
例如:假设Datetime目前是27/11/2017 16:30,如何计算完成当天剩余的小时数(28/11/2017 00:00开始)
假设Datetime是Posixlt格式。
答案 0 :(得分:1)
如果在POSIXlt上使用unclass
,则会得到一个分解所有组件的结构。下面的代码给出了小数小时。我不确定你想如何处理部分时间。四舍五入?
T1 = unclass(strptime("27/11/2006 16:30", "%d/%m/%Y %H:%M"))
24 - (T1$hour + T1$min/60)
[1] 7.5
答案 1 :(得分:0)
我真的很喜欢@ G5W的答案;这是一种替代方案,尽管是错综复杂的方式:
脚步:
1)确保我们采用POSIXct
格式
2)在初始时间内添加另一天
3)使用stringi
拆分时间字段
4)将Hour,Minute,Second
字段转换为秒
5)从我们创建的next day
中减去数字表示
6)从那时起减去可变时间。
> as.POSIXct(lubridate::dmy_hm('27/11/2017 16:30') + (60 * 60 * 24)) %>% {
t <- stringi::stri_datetime_fields(.) %>% select(Hour, Minute, Second)
(. - (t$Minute * 60 + (t$Hour * 60 * 60) + t$Second)) - dt
}
Time difference of 7.5 hours