2014-11-21 127 views
4

我有一些問題,解析一個字符串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. 返回的值是一個字符串,而不是日期時間(這是相當無關......我後來轉換爲datetime)所以

,具體問題是:如何正確解析這個字符串datetime?

回答

6

(1)嘗試strptime而不是strftime;我不確定strftime做什麼,但可能不是你的想法。

(2)我不認爲「下午」完全可以工作;您可能需要一些審慎的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 
+0

優秀!!!我只是刪除了點,它的作品就像一個魅力!'strptime(gsub('\\。','','28/10/2014 09:05:55 PM「),format ='%d /%m /%Y%I:%M:%S%p')'非常感謝! – Barranka 2014-11-21 01:01:33

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也是如此。

+0

事實證明,情況是無關緊要的,它只是在'am'去除點的物質和'pm'(現在我感覺有點啞失蹤,詳細說明) – Barranka 2014-11-21 01:07:03

+0

然後'GSUB(「\\」。 ,「」,...)'我嘗試了幾個在格式規範中放置點並放棄的實例。 – 2014-11-21 01:15:14