as.numeric(difftime(
strptime("12:00 AM", "%I:%M %p" ),
strptime("2:00 AM", "%I:%M %p" ),
 units='hours'))


结果:不适用。
我正在尝试计算时差,但是有些行生成的NA值确实很烦人,这出问题了吗?

最佳答案

要复制,请执行以下操作:

as.numeric(difftime(
 strptime("12:00 AM", "%I:%M %p", tz = "Europe/Brussels" ),
 strptime("2:00 AM", "%I:%M %p", tz = "Europe/Brussels" ),
 units='hours'))
# [1] NA


考虑到您得到的行为,我希望您遇到夏令时问题,因为您所在的语言环境在三月的最后一个星期日更改了夏令时。 strptimedifftime没有“ roll”自变量,因此您必须手动将时区设置为该时间段内不在时间更改中间的位置(并且如果要考虑它) ,请增加一个小时)。

as.numeric(difftime(
 strptime("12:00 AM", "%I:%M %p", tz = "UTC" ),
 strptime("2:00 AM", "%I:%M %p", tz = "UTC" ),
 units='hours'))
# [1] -2

关于r - R中的difftime生成NA值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49477782/

10-12 23:45