在尝试将某些字符串转换为 IDateTime 格式时,我发现一些奇怪的事情。 2 月 12 日下午 4 点及之后 IDateTime 计算 2 月 13 日的值。
> IDateTime(as.POSIXct('2006-02-12 15:59:57',format='%Y-%m-%d %H:%M:%S'))
idate itime
1: 2006-02-12 15:59:57
> IDateTime(as.POSIXct('2006-02-12 16:00:00',format='%Y-%m-%d %H:%M:%S'))
idate itime
1: 2006-02-13 16:00:00
> IDateTime(as.POSIXct('2006-02-12 22:00:00',format='%Y-%m-%d %H:%M:%S'))
idate itime
1: 2006-02-13 22:00:00
as.POSIXct 似乎工作正常:
> as.POSIXct('2006-02-12 15:59:57',format='%Y-%m-%d %H:%M:%S')
[1] "2006-02-12 15:59:57 PST"
> as.POSIXct('2006-02-12 16:00:00',format='%Y-%m-%d %H:%M:%S')
[1] "2006-02-12 16:00:00 PST"
> as.POSIXct('2006-02-12 22:00:00',format='%Y-%m-%d %H:%M:%S')
[1] "2006-02-12 22:00:00 PST"
我做错了什么?
编辑:2 月 12 日并没有什么神奇之处。我观察到同样的事情转换为“2013-11-29”之类的内容。 16:00:00 后日期加 1。
最佳答案
正如?IDateTime
所说:
"ITime does not account for time zones."
使用UTC
,一切都会正常,例如
IDateTime(as.POSIXct('2006-02-12 22:00:00',format='%Y-%m-%d %H:%M:%S', tz='UTC'))
关于r - 将字符串转换为 IDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171703/