将日期时间转换为24小时格式时出错

时间:2016-01-26 09:17:02

标签: r datetime

我有以下数据框,我正在尝试计算向量中日期之间的差异,并将其存储为新的。

Reportnumber              OpenedDate
       00001    22/1/2016 5:52:12 PM
       00002    20/1/2016 4:15:06 PM
       00003    18/1/2016 1:09:46 PM
       00004   15/1/2016 10:47:40 AM
       00005   15/1/2016 10:32:37 AM
       00006    14/1/2016 2:13:48 PM
       00007   14/1/2016 11:12:29 AM
       00008   14/1/2016 10:17:30 AM 
       00009    12/1/2016 2:25:03 PM 

在使用difftime获取差异之前,我尝试将时间转换为24小时格式并删除上午/下午,我正在执行以下操作:

dataset$convertedDate <- as.POSIXct('dataset$OpenedDate', format="%d/%b/%Y %H:%M:%s")

我在控制台中没有收到错误,但dataset$convertedDate向量没有更新。

这是解决问题的正确方法吗?

1 个答案:

答案 0 :(得分:3)

<强>更新

为facepalm做好准备。

仔细查看您正在进行的通话:

dataset$convertedDate <- as.POSIXct('dataset$OpenedDate', format="%d/%b/%Y %H:%M:%s")

您正在传递'dataset$OpenedDate'而不是dataset$OpenedDate。换句话说,您实际上是将文本字符串传递给as.POSIXct()!我确认将字符串传递给as.POSIXct()确实会返回NA,这就是您所看到的。

您还错过了PM%p)的格式参数。请尝试以下操作,假设时区为UTC(您可以根据需要进行更改):

as.POSIXct(df$OpenedDate, format="%d/%m/%Y %I:%M:%S %p", tz="UTC")

<强>输出:

[1] "2016-01-22 17:52:12 UTC" "2016-01-20 16:15:06 UTC"

数据:

df <- data.frame(Reportnumber=c('00001', '00002'),
                 OpenedDate=c('22/1/2016 5:52:12 PM', '20/1/2016 4:15:06 PM'),
                 ClosedDate=c('25/1/2016 1:35:05 PM', '20/1/2016 4:30:06 PM'))