strptime无法正确识别AM / PM字符串

时间:2013-01-22 09:47:27

标签: r strptime

使用函数strptime()时遇到了一些意外的事情。我所拥有的日期格式包括“1/22/2013 11:00:00 P.M”。我使用的格式是“%m /%d /%Y%I:%M:%S%p”。

代码如下。

strptime("1/22/2013 11:00:00 p.m",format="%m/%d/%Y %I:%M:%S %p")
[1] NA

但如果我使用

strptime("1/22/2013 11:00:00 pm",format="%m/%d/%Y %I:%M:%S %p")
[1] "2013-01-22 23:00:00"

我得到了合适的结果。

因此,该特征缺乏检测p.m及其变化(如下午)的特征。等等PM或pm。这是R中的错误吗?

R的版本我在Windows 7 32位上使用R.14.2

2 个答案:

答案 0 :(得分:11)

这不是错误,但strptime期望以标准化方式获取信息。 %p是:

  

语言环境中的AM / PM指示符。与'%I'一起使用             并且与'%H'。某些语言环境中的空字符串。

在您的语言环境中,这被定义为AM/amPM/pm。 R是一种形式语言,你需要遵守它所规定的规则。如果您定义具有级别flavorcolortaste的因子,则您无法期望能够使用colourflavour作为参考此问题的方法因子。尽管你们似乎很明显这些概念代表相同的概念,但R是一种没有人类灵活性的形式语言。

答案 1 :(得分:2)

library(lubridate)
mdy_hms("01/22/2013 11:00:00 PM")

结果:

[1] "2013-01-22 11:00:00 UTC"