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


以上是4月第一天在Ras.POSIXct和as.POSIXlt中的不同解析行为,是Rapril在愚弄我吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>