{[PP::]NNnn(CCYY)|CCYY}-MM-DD-[T-[hh:mm:ss.s[Z|±ZZ[:]zz]]] 1 2 3 4 5 6
本ライブラリでの基本的な日付時刻の表現形式です。 when?メソッドで用います。
ISO8601の拡張表現を包含し、下記の要請にマッチするように設計したものです。
PP - 時代名 or 国名 NN - 年号 nn - 当該年号での年 CCYY - 当該暦法での年 (いわゆる天文学的紀年法, 紀元前1年を0年とする) MM - 月 DD - 日 hh - 時 mm - 分 ss.s - 秒 Z - UTC ±ZZ:zz - 時間帯
原則として nn~mm は任意桁の非負整数, ss.s は非負整数または実数です。
nn, DD および上位省略形のためのデフォルト日付が指定されている場合の CCYY には、数字だけでなく、剰余類などを表す文字列を“{}”で囲った指定も可能です(→5.オブジェクトの指定)。
構文をルール風に書くと下記のようになります。
<指定> ::= {<集合群>} | <桁数値>{<集合群>} <集合群> ::= <集合> | <集合> & <集合群> <集合> ::= <要素群> | <要素名> # <要素群> <要素名> ::= <IRI> | <名前空間名:空間内要素名> | <空間内要素名> | <剰余類分母> <要素群> ::= <要素> | <要素> , <要素群> <要素> ::= <要素値> | <要素値> ± <差分番号> | <日付> <要素値> ::= <識別名> | <序数><識別名> | <序数> * <識別名> | <剰余> | <序数> * <剰余> <日付> ::= <日付番号> | <日付番号><差分記号> | <日付番号> *
<指定>の<桁数値>がない場合は上位桁で指定された範囲内の日付を対象とする(ただし実装では年号は上位桁とみなしていません)。 <集合群>は<集合>の積集合である。 <集合>の<要素名>は<日付>または登録された<識別名>から特定できる場合に省略できる。 登録された<識別名>には七曜,干支,term,phase,easter,christmasがある。 <要素名>の名前空間名は名前空間が http://hosi.org/When/CalendarNote/ の場合に省略できる。 名前空間名と名前空間の対応関係は環境に応じてあらかじめ合意しておく必要がある。 <要素群>は<要素>の和集合である。 <要素>の<差分番号>は<要素値>で特定される性質を持つ年または日からの差分である。 <要素>の<日付>は年の<指定>では使えない。 <要素名>が<剰余類分母>でない場合<要素値>は<剰余>を含まないものを使う。 <要素名>が<剰余類分母>である場合<要素値>は<剰余>を含むものを使う。 <要素値>の<序数>は<要素値>で特定される性質の何番目の出現であるかを示す。 <要素値>に<序数>がない場合は反復指定であればすべての出現、反復指定でなければ最初の出現を示す。 <序数>が‘-1’の場合は‘1’を省略できる。 <日付>の<差分記号>はWhen.exe Standard Expression の日の区切り文字である。 <日付>の‘*’は<差分記号>(%-=および%の代替としての@)のワイルドカードである。
剰余類などを用いた反復表現の仕様については、ブログ記事 2015-11-20「日付範囲の仕様(続き)」、2015-11-21「日付表現と反復指定の使用例」、2015-11-23「日付表現中の<指定>と iCalendar」をご覧ください。
区切り文字 | 1 | 2 | 3 *(3) | 4 *(3) | 5 | 6 | |||||||||
code | Y | M | S0 | S1 | S2 | その他 | D | D | h | ||||||
! | 0x21 | -2.5 | 黒分 | ||||||||||||
% | 0x25 *(1) | -2 | 閏黒分 | -2 | 欠日 | ||||||||||
& | 0x26 | -1.5 | 閏白分 | 閏白分 | 閏白分 | ||||||||||
* | 0x2A | -1 | 前年 | -1 | 閏黒分 | 閏黒分 | -1 | 前日 | |||||||
+ | 0x2B | -0.5 | 黒分 | 東経側 | |||||||||||
- | 0x2D *(2) | 0 | 当年 | 0 | 白分 | 白分 | 白分 | 通常月 | 0 | 通常日 | 0 | 当日 | 0 | 通常時 | 西経側 |
< | 0x3C | 0.5 | 黒分 | ||||||||||||
= | 0x3D | 1 | 翌年 | 1 | 閏月 | 1 | 余日 | 1 | 翌日 | 1 | 閏時 *(4) | ||||
> | 0x3E | 1.5 | |||||||||||||
? | 0x3F | 2 | 翌々月 |
*(1) URIエスケープの便のため'%'(0x25)のかわりに'@'(0x40)を用いることができる *(2) 年号がある場合は'-'(0x2D)のかわりに'.'(0x2E)、時分秒に対しては'-'(0x2D)のかわりに':'(0x3A) *(3) 常に 0 なら桁自体を省略する *(4) 夏時間から標準時間にもどるときに閏時が現れる