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

pme*_*tra 8 r strptime

我在使用函数strptime()时遇到了一些意想不到的事情.我所拥有的日期格式包括"1/22/2013 11:00:00 PM".我使用的格式是"%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
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用

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

我得到了适当的结果.

因此,该特征缺乏检测pm及其变化(例如pm等)以代替PM或pm.这是R中的错误吗?

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

Pau*_*tra 10

这不是错误,但是strptime以标准化方式预期信息.%p是:

区域设置中的AM/PM指示符.与'%I'结合使用而不与'%H'结合使用.某些语言环境中的空字符串.

在您的语言环境中,这被定义为AM/amPM/pm.R是一种形式语言,你需要遵守它所规定的规则.如果你定义一个水平的因素flavor,color,taste,你不能指望能够使用colourflavour作为的方式来引用这个因素.尽管你们似乎很明显这些概念代表相同的概念,但R是一种没有人类灵活性的形式语言.

  • 摆脱时期:`gsub("[.]","\\ 1","1/22/2013 11:00:00 pm") (3认同)

Dav*_*ang 6

library(lubridate)
mdy_hms("01/22/2013 11:00:00 PM")
Run Code Online (Sandbox Code Playgroud)

结果:

[1] "2013-01-22 11:00:00 UTC"
Run Code Online (Sandbox Code Playgroud)

  • 11点(结果)是早上11点,但是晚上11点是晚上11点。所以你的结果似乎是错误的。 (4认同)
  • 如果有人想知道,这个答案似乎是使用包“lubridate” (3认同)