高橋です。 Tadayoshi Funaba <tadf / kt.rim.or.jp>さん: > 僕は変な決めつけがなくて現在の仕様は好きです。ですが、高橋さんに勝手に > やってくださいというのはどうか。なんだか、ちょっと申し訳ない気分になっ > てしまったのでした。 いえいえ、そんな(^^; 私がわがまま言ってるだけですから。 > もし、正式に parsedate.rb に含めるというのであれば、前田さんのようなや > りかたでもよいと思います。僕はどっちがよいのか判りません。前田さんのほ > うが新しい名前を考えずに済むという点では優れた解決方法だと思います。 というわけで、前田さん提案風にやってみました。 差分は以下の通りです。
*** parsedate.rb.org Tue Feb 2 21:39:37 1999 --- parsedate.rb Tue Feb 2 21:43:57 1999 *************** *** 9,15 **** 'thu' => 4, 'fri' => 5, 'sat' => 6 } DAYPAT = DAYS.keys.join('|') ! def parsedate(date) # part of ISO 8601 # yyyy-mm-dd | yyyy-mm | yyyy # date hh:mm:ss | date Thh:mm:ss --- 9,15 ---- 'thu' => 4, 'fri' => 5, 'sat' => 6 } DAYPAT = DAYS.keys.join('|') ! def parsedate(date, guess=false) # part of ISO 8601 # yyyy-mm-dd | yyyy-mm | yyyy # date hh:mm:ss | date Thh:mm:ss *************** *** 57,62 **** --- 57,75 ---- mday = $2.to_i if $3 year = $3.to_i + end + elsif date.sub!(/(\d+)-(#{MONTHPAT})-(\d+)/i, ' ') + mday = $1.to_i + mon = MONTHS[$2.downcase] + year = $3.to_i + end + if guess + if year < 100 + if year >= 69 + year += 1900 + else + year += 2000 + end end end return year, mon, mday, hour, min, sec, zone, wday
これで、 require 'parsedate.rb' include ParseDate p parsedate("Sun, 06 Nov 1994 08:49:37 GMT ") p parsedate("Sunday, 06-Nov-94 08:49:37 GMT ") p parsedate("Sun Nov 6 08:49:37 1994 ") p parsedate("Sun, 06 Nov 1994 08:49:37 GMT ",true) p parsedate("Sunday, 06-Nov-94 08:49:37 GMT ",true) p parsedate("Sun Nov 6 08:49:37 1994 ",true) を実行すると、 [1994, 11, 6, 8, 49, 37, "GMT", 0] [94, 11, 6, 8, 49, 37, "GMT", 0] [1994, 11, 6, 8, 49, 37, nil, 0] [1994, 11, 6, 8, 49, 37, "GMT", 0] [1994, 11, 6, 8, 49, 37, "GMT", 0] [1994, 11, 6, 8, 49, 37, nil, 0] こうなりました。めでたしめでたし(^^) というわけで、parsedate.rbがこうなるとうれしいです。 高橋征義 (株式会社アイナック) Email:maki / inac.co.jp