将字符转换为 R 中的日期时间格式

Converting a character to a Date Time format in R

不知道我做错了什么。我正在尝试将字符转换为 POSIXct 日期格式并获取空值。这是一些示例代码:

as.POSIXct(strptime("29-MAR-2015 01:14:32", format = "%d-%b-%Y %H:%M:%S"))

这给了我一个 NA。

上一个日期是三月。如果我将日期切换到四月,并重复相同的过程,这就是我得到的结果::

as.POSIXct(strptime("29-APR-2015 01:14:32", format = "%d-%b-%Y %H:%M:%S"))

我得到:“2015-04-29 01:14:32 IST”

为什么此转换适用于三月日期,但不适用于四月日期?

您不需要 strptime。例如,尝试:

as.POSIXct("29-APR-2015 01:14:32", format = "%d-%b-%Y %H:%M:%S")

[1] "2015-04-29 01:14:32 EDT"

当然,我在不同的时区。

要记住的一件事是,由于 "daylight savings time" 等原因,某些时区不存在某些时间 - 例如,时钟将 "leap" 向前或向后 1 小时;后一种情况在您的情况下没有问题(但令人困惑 b/c 重复一个小时);前一个案例产生了一个问题,因为跳过了一个小时!

如何解决?指定一个没有夏令时的时区。例如,格林威治标准时间:

as.POSIXct("29-MAR-2015 01:14:32", format = "%d-%b-%Y %H:%M:%S", tz="GMT")

[1] "2015-03-29 01:14:32 GMT"

注意:我无法重现你的 IST 时区,所以这真的只是我最好的猜测。尝试使用 tz="GMT",或指定日期的 实际 时区(而不是依赖当地时区),这应该会有所帮助!

也解释了为什么别人不能轻易复制。