0

データベースに保存できるように、フォーマットされた日付文字列を日時オブジェクトに変換する信頼できる方法が必要です。RSSフィードからデータをインポートしていますが、日付文字列は次のよう10/31/2012 11:59:00 PMになっていますが、次のように時間データがない場合があります9/24/2012。時刻が存在するかどうかに関係なく、文字列を日時オブジェクトに変換する方法はありますか?

信頼性が足りなかっDate.strptime()たので使っていました。Date.parse()これが私が使用していたもので、時刻のない日付文字列に遭遇するとエラーになります。

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

これを処理するための最良の方法は何でしょうか?

4

2 に答える 2

4

私は慢性をお勧めします:

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
于 2012-10-25T07:17:55.103 に答える
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
于 2012-10-25T07:14:35.033 に答える