将字符串转换为IDateTime

时间:2014-01-16 20:03:39

标签: r data.table

在尝试将某些字符串转换为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。

1 个答案:

答案 0 :(得分:2)

正如?IDateTime所说:

  

“ITime不考虑时区。”

使用UTC,一切都会奏效,例如

IDateTime(as.POSIXct('2006-02-12 22:00:00',format='%Y-%m-%d %H:%M:%S', tz='UTC'))