2013-01-22 33 views
7

我也遇到意想不到的事情與功能strptime工作時,()的認可。我有日期的格式由「2013年1月22日11:00:00 P.M」的。我使用此格式爲 「%米/%d /%Y%I:%M:%S%P」。AM/PM的字符串沒有正確的strptime

代碼如下。

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" 

我得到相應的結果。

所以此功能的缺乏strptime檢測時三十分及其變化,例如下午等等來代替PM或PM。這是R中的一個錯誤嗎?

R的版本我使用R.14.2上視窗7 32位

+4

請** **非常謹慎標籤的行爲在任何既定的語言 「錯誤」。總是很容易責怪軟件,特別是一些我們不熟悉的新軟件包,但事實上這些問題實際上從來都不是錯誤。 (除非是SAP,當然是:-)) –

回答

11

這是沒有錯誤,但strptime預計以標準化的方式的信息。 %p是:

區域設置中的AM/PM指示符。使用會同'%我 和與「%H」。某些語言環境中的空字符串。

在您語言環境這被定義爲AM/amPM/pm。 R是一種正式的語言,你需要堅持它強加的規則。如果您定義的因子級別爲flavor,color,taste,則不能指望能夠使用colourflavour作爲引用此因子的方式。儘管這似乎是顯而易見的你,這些代表相同的概念,R是沒有人類靈活的正式語言。

+2

擺脫句點:'gsub(「[。]」,「\\ 1」,「1/22/2013 11:00:00 pm」)' – Michael

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

結果:

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

如果有人想知道,這個答案似乎是使用軟件包「lubridate」 – andrechalom

相關問題