将“1984-03-25 02:00:00”转换为POSIX会给NA

时间:2015-06-12 15:38:37

标签: r datetime posix na

在将日期时间向量转换为POSIXlt时,只有一个特定时间“25-Mar-1984-02:00”“被转换为POSIXlt但返回NA!所以,这一行在我的分析/图中被省略了。

is.na(as.POSIXlt("25-Mar-1984-02:00",format = "%d-%b-%Y-%H:%M"))
is.na(as.POSIXlt("25-Mar-1984-03:00",format = "%d-%b-%Y-%H:%M"))
is.na(as.POSIXlt("25-Mar-1984-01:00",format = "%d-%b-%Y-%H:%M"))
is.na(as.POSIXlt("24-Mar-1984-02:00",format = "%d-%b-%Y-%H:%M"))
is.na(as.POSIXlt("26-Mar-1984-02:00",format = "%d-%b-%Y-%H:%M"))

返回TRUE,FALSE,FALSE,FALSE,FALSE。

class(as.POSIXlt("25-Mar-1984-02:00",format = "%d-%b-%Y-%H:%M"))

返回     [1]“POSIXlt”“POSIXt”

这不奇怪吗?我怎么能让它成为“不是NA”?

1 个答案:

答案 0 :(得分:3)

虽然您没有说出您的时区是什么,但这看起来像夏令时(DST)问题。在使用DST的时区中,将有一天小时从1:59:59.999“跳跃”到3:00:00.000。这意味着在这一天凌晨2点的任何时候都不存在。

我的猜测是1984-03-25 02:00:00是您当地时区发生DST的时间。