2011年6月27日

[ruby-list:48195] Date::parseで不正な和暦を検証できませんか?

えだゆきひこです。

和暦の入力を受けて、西暦変換する処理をしているのですが
現状のDate::parseを使うと、指定元号の年数を過ぎていても
気を効かせて(?)無理矢理超過分と思われるDateに変換されてしまいます。

不正な指定ではないかを検査したいのですが、元号と日付の関係を
チェックするようには出来ないでしょうか?

ググると和暦処理については、ユーザの皆さんが個々に色々な工夫を
されているようなのですが標準ライブラリで対応していただけると、
色々捗ると思います。いかがでしょうか?

irb(main):002:0> RUBY_VERSION
=> "1.9.2"
irb(main):004:0> Date::parse("S64.1.9")
=> #<Date: 1989-01-09 (4895071/2,0,2299161)>
irb(main):007:0> Date::parse("S70.2.28")
=> #<Date: 1995-02-28 (4899553/2,0,2299161)>

irb(main):005:0> Date::parse("M46.7.30")
=> #<Date: 1913-07-30 (4839957/2,0,2299161)>
irb(main):006:0> Date::parse("M45.7.32")
ArgumentError: invalid date
from c:/usr/local/lib/ruby/1.9.1/date.rb:1022:in `new_by_frags'
from c:/usr/local/lib/ruby/1.9.1/date.rb:1066:in `parse'
from (irb):6
from c:/usr/local/bin/irb.bat:19:in `<main>'

よろしくおねがいします。


投稿者 xml-rpc : 2011年6月27日 14:05
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/105095
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。