4月第一天在Ras.POSIXct和as.POSIXlt中的不同解析行为,是Rapril在愚弄我吗?
我在 R 中处理数据格式方面没有经验,而且我正在努力理解四月一日的不同行为......这是愚人节吗??:)
它们具有相同的格式,但似乎无法使用 as.POSIXct 解析第一天(当其他日期显示没有问题时)或者它不使用 as.POSIXlt 返回时区?
(as.POSIXct("1/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # this doesn't work
(as.POSIXct("2/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # this works
(as.POSIXct("01/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # this doesn't
(as.POSIXct("02/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # this does...
(as.POSIXlt("1/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # This works, but does not returns a time zone
(as.POSIXlt("2/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # This works, and returns a time zone
(as.POSIXlt("01/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # This works, and does not returns a time zone
(as.POSIXlt("02/04/2012 02:58", format = "%d/%m/%Y %H:%M")) # This works, and returns a time zone
关于为什么的任何方向?谢谢!
回答
这几乎可以肯定是夏令时问题。不知道为什么POSIXct并且POSIXlt行为不同。从您的个人资料来看,您好像在墨西哥。
从这里:
墨西哥大部分地区,包括首都墨西哥城,将在 3 周后的 2012 年 4 月 1 日星期日将时钟调快 1 小时。
所以问题是 2012 年 4 月 1 日凌晨 2:58在您的语言环境中当前活动的时区中不存在。
除非有特定的事情与 POSIXct/POSIXlt 差异有关,否则这可能应该作为例如的副本关闭:
- 这个日期和时间有什么问题?
- R POSIXct 返回 NA 为“03/12/2017 02:17:13”
- R 中的 PosixCT 转换失败
- 奇怪的 as.POSIXct 行为取决于夏令时
- R中奇怪的strptime行为
- as.POSIX 错误,无法转换特定日期
- 有和没有指定格式的两个紧密时间字符串的奇怪 POSIX 行为
而该R帮助问题
如果您想通过将所有时间设置为 UTC(即忽略您的本地时区设置)来解决这个问题,我相信 Stack Overflow 上有很多建议(现在您知道搜索“夏令时”应该是很容易找到它们)。
强制性xkcd
THE END
二维码