解析字符串到datetime时遇到问题

时间:2014-11-21 00:48:12

标签: r datetime

我在解析字符串到日期时遇到了一些问题。

这就是我正在做的事情

strftime("28/10/2014 09:05:55 p.m.", format='%d/%m/%Y %I:%M:%S %p')
##[1] "20/10/28 12:00:00 "

正如你所看到的,这里发生了三件令人不快的事情:

  1. 返回的日期不正确!
  2. 时间始终设为12:00:00
  3. 返回的值是一个字符串,而不是一个日期时间(这是无关紧要的......我可以将它转换为日期时间)
  4. 因此,具体问题是:如何正确地将此字符串解析为日期时间?

2 个答案:

答案 0 :(得分:6)

(1)尝试strptime而不是strftime;我不确定strftime是做什么的,但也许不是你的想法。

(2)我不认为" p.m。"会工作的;你可能需要一些明智的gsub("p.m.","PM",...)使用。

strptime("28/10/2014 09:05:55 PM", format='%d/%m/%Y %I:%M:%S %p')
## [1] "2014-10-28 21:05:55 EDT"
strptime("28/10/2014 09:05:55 p.m.", format='%d/%m/%Y %I:%M:%S %p')
## NA

答案 1 :(得分:3)

我认为您需要首先将p.m.更改为PM(以及使用适合输入处理的strptime:

> strptime(sub("p\\.m\\.", "PM", "28/10/2014 09:05:55 p.m."), format='%d/%m/%Y %I:%M:%S %p')
[1] "2014-10-28 21:05:55 PDT"

当然,您也可能需要将a.m.转换为AM