R中的difftime生成NA值

时间:2018-03-25 15:53:46

标签: r time strptime difftime

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

结果:NA。
我正在尝试计算时差,但有些行会产生NA值,这些值真的很烦人,这里有什么问题吗?

1 个答案:

答案 0 :(得分:2)

要复制,请执行:

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

考虑到您的行为,我预计您遇到了夏令时问题,因为您所在的区域设置在3月的最后一个星期日有夏令时变化。没有" roll" strptimedifftime的参数,因此您必须手动将时区设置为在该时间段内不会发生时间变化的位置(如果您想对其进行说明) ,加一个小时)。

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