2012-07-23 12 views
21

私は文字列20120119を持っています。日付は'YYYYMMDD'です。Rubyの日付文字列を解析します

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

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

あなたはRubyの標準ライブラリで提供さ Date.strptime方法使用することができます

答えて

56

:ヒューリスティックは、このケースでは正常に動作しているため

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には、Dateのparseメソッドのように機能するparseメソッドもあります。 strptimeも同じです。

+1

Date.parseはYYYYMMDDでも動作します。フォーマット文字列は必要ありません。 – rrhartjr

+1

解析例外はどうですか? – chrisapotek

+0

文字列が解析例外をスローするかどうかを検出する方法はありますか? – theUtherSide

関連する問題