我的功能问题as.POSIXlt对我来说显得非常神秘。我在data.frame中有超过10万个日期时间,但其中3个没有表现得如此,并且在包含这3个日期时更改了所有日期时间。
time=c("2008-03-30 03:07:44","2008-03-30 03:48:56","2012-03-25 03:22:20")
d=as.POSIXlt(time)
d
## [1] "2008-03-30" "2008-03-30" "2012-03-25"
但它应该是:
## [1] "2008-03-30 03:07:44" "2008-03-30 03:48:56" "2012-03-25 03:22:20"
更改这些日期的分钟和秒数并不会强制此功能以正确的方式工作,但会更改小时,天,月和年,然后才能正常工作。所以问题只发生在这些特定日期和时间的组合中 知道这个相当神秘的问题可能是什么原因?
答案 0 :(得分:2)
这是因为从标准时间切换到夏令时。根据您的时区(GMT + 2),交换机可能在2008年3月30日凌晨3:00到4:00之间进行,同样在2012年3月25日。所以任何事情都在凌晨3点到凌晨4点之间。存在。 R认为这些时间戳不可能存在,并且默认为当天。
我认为你可以通过在POSIXlt调用中设置时区来解决这个问题。