filter + calendarでfilendarです。
ある月の平日を求めるプログラムや、ある日が国民の休日であるか判定するプログラムなどを記述するためのJavaScriptライブラリです。
使い方
ここからダウンロードしてきて、 npm i & npm run build
してください。
サンプルコードはこんな感じです
const {SUN, SAT, MON} = Calendar; const {or, day, nthDay, weekday} = Calendar.filter; new Calendar.Year(2016).filter(or(day(SUN), day(SAT))); // 2016年のうち、土曜日であるもしくは日曜日である日を羅列する new Calendar.Month(2016, 11 - 1).filter(weekday()); // 2016年11月の平日を羅列する new Calendar.Month(2016, 11 - 1, 28).is(nthDay(4, MON)); // 2016年11月28日が4番目の月曜日であるかを判定する
このように、好きな年、または月に含まれる日をフィルタして絞り込むことができます。
現在、サポートしているフィルタは以下の通りです
- 祝日に関するもの(newYearsDay(), showaDay()など)
- 年や月に関するもの(year(), month(), date()など)
- フィルタに対し論理演算をするもの(and(), or(), not(), nand(), nor())
- 期間を示すもの(since(), until(), range())
- 複合的なもの(weekday(), publicHoliday(), substituteHoliday())
また、自身でカスタムフィルタを作ることもできます。
const fizz = () => _date => _date.getDate() % 3 === 0; // 日が3の倍数である、というカスタムフィルタ const buzz = () => _date => _date.getDate() % 5 === 0; // 日が5の倍数である、というカスタムフィルタ new Calendar.Month(2016, 3 - 1).filter(fizz()); // 3月のうち、3の倍数である日を列挙 new Calendar.Month(2016, 3 - 1).filter(buzz()); // 3月のうち、5の倍数である日を列挙