When.strptime などの追加

外部ファイルを読み込んで暦情報を抽出するために
標題の類の機能を追加しました[1]

 require 'date'
 require 'when_exe'
 include When

When.strptime

strptime は DateTime.strptime を呼びますので
require 'date' が必要です。

 p strptime('1950 Aug', '%Y %B')
  #=> 1950-08
 p strptime('1950 Aug 31', '%Y %B %d')
  #=> 1950-08-31
 p strptime('Tue Jan 6 9:18:24 +09:00 2015', '%A %B %d %H:%M:%S %z %Y')
  #=> 2015-01-06T09:18:24+09:00
 p strptime('木 1月 6 9:18:24 JST 2015', '%A %B %d %H:%M:%S %z %Y', :locale=>'ja')
  #=> 2015-01-08T09:18:24+09:00, 矛盾がある場合 strptimeは「年」を優先します。
 p strptime('Thu Jan 6 9:18:24 +09:00 2015', '%A %B %d %H:%M:%S %z %Y', :invalid=>:raise)
  #=> ArgumentError, 矛盾がある場合例外を投げるようにもできます。

When.when?

 p when?('1950 Aug 31', :parse=>'%Y %B %d')
  #=> 1950-08-31
 p when?('Thu Jan 6 9:18:24 JST 2015', :parse=>'%A %B %d %H:%M:%S %z %Y')
  #=> 2022-01-06T09:18:24+09:00, 矛盾がある場合 when?は「月日」を優先します。
 p when?('木 1月 6 9:18:24 JST', :abbr=>2015, :parse=>['%A %B %d %H:%M:%S %z', 'ja'])
  #=> 2022-01-06T09:18:24+09:00
 p when?('昭和十五年十一月廿日', :parse=>Locale::JapaneseParser)
  #=> 昭和15(1940).11.20
 p when?('昭和甲子年11月甲子', :parse=>Locale::JapaneseParser)
  #=> 昭和59(1984).11.26
 p when?('明治元年閏4月甲寅12時6分3秒+09:00', :parse=>Locale::JapaneseParser)
  #=> 明治01(1868).04=07T12:06:03+09:00

日本語ローケールでの月名(1月など)は省略名とみなしてパースします。

[1] 例によって GitHub は更新しましたが、gem の更新は
  次回バージョンアップ時です。

この記事へのコメント

この記事へのトラックバック