Time.parseの例外処理

Time.parseの例外処理

欲しかった情報はほとんどここに書いてあった。
http://www.metareal.org/2007/06/21/error-checking-in-ruby-time-parsing/

parsedateがdateから情報を取り出せないとき、または Timeクラスが指定された日時を表現できないときにArgumentErrorが発生します。

このメソッドは他のパース用メソッドのフェイルセーフとして以下のように使用できます:

Time.rfc2822(date) rescue Time.parse(date)
Time.httpdate(date) rescue Time.parse(date)
Time.xmlschema(date) rescue Time.parse(date)

従ってTime.parseの失敗はチェックすべきです。

http://www.ruby-lang.org/ja/man/html/time.html

と言われても、どうやってチェックするのか分からない。

適当な文字列入れるとなぜかエラーや例外が発生しないで、Time.nowが返ってくるのでチェックに困る。第二引数にTime.at(0)を指定して、返ってきたのもTime.at(0)であればエラーってことでいいんじゃないかという話?

日時を入力してもらうときTime.parse(Parsedate.parsedate)は便利なんだけど……。

parsedate はいろいろな書式をあつかえます。たとえば、つぎのような表現を受けつけます:

Sat
Saturday
1999-08-28
21:45:09
09:45:09 PM
1999-08-28T21:45:09+0900
19990828 214509
H11.08.28T21:45:09Z
Sat Aug 28 21:45:09 1999
Sat Aug 28 21:45:09 JST 1999
Sat, 28 Aug 1999 21:45:09 -0400
Saturday, 28-Aug-99 21:45:09 GMT
08/28/1999
1999/08/28

http://www.ruby-lang.org/ja/man/html/parsedate.html

参考:
http://www.metareal.org/2007/06/21/error-checking-in-ruby-time-parsing/