r - 将字符串转换为 IDateTime

标签 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。

最佳答案

正如?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/

相关文章:

用于读取特定表、列的 sql 命令

r - 转置数据表

r - 如何将 S4 对象的 setMethod `[` 应用于插槽中的 data.table

r - 如何在 data.table 中执行此合并操作

从数据框中删除所有只有零的列或行

r - "Error in colnames"合并xts集时

r - 如何使用 stat ="count"在 ggplot2 中用计数或百分比标记条形图?

R - 如何比较两列以上的值

r - 对于除当前级别之外的所有级别的每个级别的因子聚合值

r - 如何使用 data.tables 按附近值进行分组