cron や RRULE では書きにくい「営業日で前後にずらす」「祝日を避ける」定期の予定を、Hidori で使える式(Kairos)として 18 本公開しています。各ページで、今後 1 年間の発火日を確かめられます。
毎月の最終営業日(土日祝なら手前の営業日)の夕方に発火。標準 cron に「月末」は無く、Quartz の LW も祝日は扱えない——「月末を営業日で前へ丸める」が 1 行になる。
経理の締めリマインドの定番形。月末を営業日へ丸めてからさらに営業日で 3 日さかのぼる——「営業日で数える後方シフト」は cron/RRULE に無い語彙。
月初が土日祝なら後ろの営業日へ送って朝に発火。cron の「毎月 1 日」固定では休日始まりの月に休日のまま発火してしまう、月初処理の定番形。
月初から数えて 5 番目の営業日(月次バッチ・報告締めの定番)。「営業日で数えて N 日目」は暦日ベースの cron には存在しない語彙。数字を変えれば第 N 営業日に。
月の最後の 3 日間だけ毎朝発火。月長 28〜31 日の揺れを daysInMonthOf が吸収し、cron だと月ごとに壊れる複数本の書き分けが 1 行に。
「31 日が無い月はどうするか」は cron の古典的な罠(2 月に一度も動かない設定事故の温床)。「常にその月の最終日」と意図を言い直せば式は 1 語——二義が式の選び方として明示される。
25 日が土日祝のときは直前の営業日へ前倒し。「固定日+祝日カレンダーで前へ丸める」の合成は cron/RRULE では書けない給与実務の定番形。
源泉所得税など「期日が休日なら翌倒し」型。前倒しの給与日と対になる Following 丸めで、固定日と祝日カレンダーの合成は cron/RRULE では書けない。
15 日が土曜なら前日の金曜・日曜なら翌月曜(Quartz 15W 相当・土日回避)。「最も近い」の中の場合分けがそのまま式に見える——祝日回避まで必要なら「給与日」レシピの roll(…, on: bizDay) 合成の形に組み替える。
5・10・15…30 日と月末、休日は前営業日へ前倒し。集金・支払が集中する五十日の実務定番で、mod 演算と営業日丸めの合成は cron に無い語彙。
土日祝を除く毎朝に発火。cron の MON-FRI 指定では祝日を除けない——祝日カレンダー連動の「営業日」語彙がそのまま式になる。
金曜が祝日の週は木曜へ前倒しして夕方に発火。「曜日+祝日回避」の合成はRRULE では書けない週報の定番形。
隔週とはずれ方が違う「第 2・第 4」の定例会形(月をまたいでも序数を保つ)。BYDAY=2WE,4WE は iCalendar 実装間で通らないことで知られる相互運用の断層。
成人の日・スポーツの日と同じ「第 2 月曜」の形。月内で数えて 2 番目という序数指定がwithin+nth の正準形でそのまま書ける。
起点日から 1 週おきの月曜に発火。cron が書けない「隔週」の代表例で、どちらの週かの位相は stride の起点日が固定する——起点は自分の運用に合わせて書き換える。
曜日規則の違う 2 系列を単一の定義に合成。iCalendar の仕様上は書けても(BYDAY=2TU,4TH)実装間で通らない(Outlook が拒否し W3C が提供を断念)——相互運用の断層で知られる形。
3・6・9・12 月の月末を営業日へ前倒し。月の指定はできても「月末を営業日で丸める」が cron には無く、決算・報告締めの定番が 1 行になる。
祝日カレンダーそのものを起点に前日へずらして朝に発火。連休前の在庫・締め確認向けで、「祝日の集合」を式の材料にできるのは external カレンダー連動ならでは。