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

时间:2015-08-21 10:33:26

标签: r datetime posix

不知道我在这里做错了什么。我试图将一个字符转换为POSIXct日期格式并获得null。以下是一些示例代码:

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"

为什么此转换适用于3月日期,而不是4月日期?

1 个答案:

答案 0 :(得分:2)

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

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

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

当然,我在不同的时区。

要记住的一点是,由于“夏令时”之类的某些时区某些时间不存在 - 例如,时钟将向前或向后“跳跃”1小时;后一种情况在你的情况下没有问题(但是重复一小时令人困惑的b / c);上一个案例会产生问题,因为会跳过一个小时!

如何解决?指定没有夏令时的时区。例如,GMT:

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",或指定日期的实际时区(而不是依赖于当地时区),这应该会有所帮助!

还解释了为什么其他人不能轻易复制。