在尝试将某些字符串转换为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。
答案 0 :(得分:2)
正如?IDateTime
所说:
“ITime不考虑时区。”
使用UTC
,一切都会奏效,例如
IDateTime(as.POSIXct('2006-02-12 22:00:00',format='%Y-%m-%d %H:%M:%S', tz='UTC'))