2012-10-25 93 views
0

我需要一種可靠的方法將格式化的日期字符串轉換爲日期時間對象,以便我可以保存到數據庫中。我從一個RSS提要導入數據,日期字符串看起來像這樣10/31/2012 11:59:00 PM,但每隔一段時間就會有一個沒有時間數據,如下所示:9/24/2012。有沒有辦法將字符串轉換爲日期時間對象,無論時間是否存在?將2種類型的日期字符串轉換爲日期時間對象

我正在使用Date.strptime(),因爲Date.parse()對我來說不夠可靠。這是我正在使用的,當它遇到沒有時間的日期字符串時會出錯。

Date.strptime(i.xpath('activedate').text, '%m/%d/%Y %I:%M:%S %p').to_datetime 

什麼是最好的處理方法?

回答

4

我建議chronic

require 'chronic' 

Chronic.parse '10/31/2012 11:59:00 PM' 
#=> 2012-10-31 23:59:00 0800 
Chronic.parse '9/24/2012' 
#=> 2012-09-24 12:00:00 0800 
+0

這完美地工作!感謝分享。 – Ken

1

,我正通過可能的日期格式的數組循環,並嘗試解析,直到一個成功:

parsed_date = nil 

['%m/%d/%Y %I:%M:%S %p', '%m/%d/%Y'].each do |format| 
    parsed_date ||= DateTime.strptime(i.xpath('activedate').text, format) rescue nil 
end 
相關問題