日付範囲の仕様(続き)

2015-11-14 日付範囲の仕様の件

JIS X 0301では、繰り返し指定をする場合

 R繰り返し部/ベース日付/P繰り返し間隔

のような書式が基本です。

when_exe での拡張を行い when? メソッドの振る舞いを
下記のようにしました。

 RnPxx/yyyy{ry}-mm-dd{rd}/Pzz

とするとき、

・R繰り返し部
回数の指定 n があれば Array なければ Enumerator を返す。
Pxx でイベントの継続期間[1]を指定できる。

・ベース日付
{}で囲った指定により、年と日の振る舞いを指定できる。

・P繰り返し間隔
{}で囲った指定により、冗長になる場合は省略できる。

例えば、シルバーウィークの「国民の休日」は、太陽黄経が180度
になる前日の火曜日[2]なので、

 require 'when_exe'
 include When

 pp when?("R3/2000-09-01{TU & SolarTerms#term180-1}T00:00:00+09:00") #=>
 #
 # [2009-09-22T00:00:00+09:00,
 # 2015-09-22T00:00:00+09:00,
 # 2026-09-22T00:00:00+09:00]

という具合(→iCalendar rdocに準ずる)。
{}で囲った部分は上記のようにかなり複雑になることがあります。

例によって、GitHub への反映は行いましたが gem のバージョンアップ
は次回です。

日を改めて、もう少し詳しい説明を行います。

[1] 原仕様のP繰り返し間隔は、繰り返し間隔であって継続期間ではない。
[2] 秋分が24日の水曜日になることは21~22世紀にはありません。

この記事へのコメント

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