web-dev-qa-db-ja.com

Rubyの日付文字列を解析します

20120119という形式で日付を表す文字列'YYYYMMDD'があります。

この文字列を解析して、日付を表すRubyオブジェクトにしたいので、今日の日付との差分などの基本的な日付計算を行うことができます。

バージョン1.8.6(必須)を使用しています。

29
Kevin

Date.strptime Rubyの標準ライブラリで提供されるメソッド:

require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")

あるいは、コメントで提案されているように、Date.parse、この場合ヒューリスティックは正しく機能するため:

require 'date'
string = "20120723"
date = Date.parse(string)

日付が無効な場合、どちらもArgumentErrorをレイズします:

require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date

Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date

時間、分なども表す場合は、 DateTime を確認する必要があります。 DateTimeは、parseの解析メソッドのように機能するDateメソッドも提供します。 strptimeについても同様です。

66
robustus