不知道我在这里做错了什么。我试图将一个字符转换为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月日期?
答案 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"
,或指定日期的实际时区(而不是依赖于当地时区),这应该会有所帮助!
还解释了为什么其他人不能轻易复制。