日付表現と反復指定の使用例

日付表現と反復指定の使用例を列挙しておきます。

 require 'pp'
 require 'when_exe'
 include When
 
 #年の指定 - yyyy{ry}
 
 pp when?('1900{甲子}-01-01')             #=> 1924-01-01
 pp when?('{甲子}-01-01', :abbr=>1900)         #=> 1924-01-01
 pp when?('昭和{甲子}-01-01')             #=> 昭和59(1984).01.01
 
 #日の指定 - dd{rd}
 # rdの指定
 #  剰余類
 pp when?('2015-02-{SU}')               #=> 2015-02-01, 2月の第1日曜
 pp when?('2015-02-{4SU}')               #=> 2015-02-22, 2月の第4日曜
 #  イベント
 pp when?('2015-09-01{SolarTerms#term180}T00:00+09:00')#=> 2015-09-23T17:20+09:00, 秋分
 pp when?('2015-01-01{Christian#easter}')       #=> 2015-04-05, 復活祭
 pp when?('2015-01-01{Christian#christmas}')      #=> 2015-12-25, クリスマス
 #  組み合わせ - 七曜とイベント
 pp when?('2015-09-01{SolarTerms#term180-1&TU}T00:00+09:00') #=> 2015-09-22T00:00+09:00, 国民の休日
 #  組み合わせ - 日付と七曜
 pp when?('2015-05-{06&MO,TU,WE}')           #=> 2015-05-06, 振替休日
 pp when?('2016-05-{06&MO,TU,WE}')           #=> nil, 2016年は憲法記念日~こどもの日は振替にならない
 
 # ddの省略
 pp when?('2015-02-01{5SU}')              #=> 2015-03-01, 月に関係なく基準日から5回目の日曜日
 pp when?('2015-02-{5SU}')               #=> nil, 月の外なら nil になる
 pp when?('2015-02-{-SU}')               #=> 2015-02-22, 2月の最終日曜
 
 #反復部 - RnPxx
 # Rn部
 #  n 省略 - Enumerator で返す
 it = when?('R/2015-09-01{SolarTerms#term180-1&TU}T00:00+09:00') #=>国民の休日, 下記
 3.times do
  pp it.succ #=>
 # 2015-09-22T00:00+09:00
 # 2026-09-22T00:00+09:00
 # 2032-09-21T00:00+09:00
 end
 #  n 回反復 - Array で返す
 pp when?('R10/2015-02-{MO}')               #=> 2月の月曜, 下記
 # [2015-02-02, 2015-02-09,
 # 2015-02-16, 2015-02-23,
 # 2016-02-01, 2016-02-08,
 # 2016-02-15, 2016-02-22,
 # 2016-02-29, 2017-02-06]
 
 pp when?('R3/2015-05-15/P2Y')              #=> 神田祭例大祭(隔年),日曜の場合の例外考慮せず
 # [2015-05-15,
 # 2017-05-15,
 # 2019-05-15]
 
 pp when?('R3/2015-09-01{SolarTerms#term180-1&TU}T00:00+09:00') #=>国民の休日, 下記
 # [2015-09-22T00:00+09:00,
 # 2026-09-22T00:00+09:00,
 # 2032-09-21T00:00+09:00]
 
 pp when?('R2/弘化{卯}-02-{1卯}') #=>「金性のひとうけニ入る」, 下記
 # [安政02(1855).02.10,
 # 慶応03(1867).02.07]
 
 pp when?('R24/2016-01-01{SolarTerms#term0/15}T00:00+09:00')  #=> 二十四節気, 分未満切り捨て
 #[2016-01-06T07:09+09:00,
 <..中略..>
 # 2016-12-21T19:44+09:00]
 
 # Pxx部
 #  あり - xx は各反復ごとのイベント継続時間
 pp when?('R4P3D/2011-01-01{Christian#easter-50}') #=> リオのカーニバル
 #
 # [2011-03-05...2011-03-08,
 # 2012-02-18...2012-02-21,
 # 2013-02-09...2013-02-12,
 # 2014-03-01...2014-03-04]

この記事へのコメント

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