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
鉴于您遇到的行为,我预计您会遇到夏令时问题,因为您所在的语言环境在 3 月的最后一个星期日更改了夏令时。没有“滚动”参数,strptime
因此difftime
您必须手动将时区设置为该时间段内不处于时间变化中间的位置(如果您想考虑它,请添加一个小时)。
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