プログラミング初心者でも安心!date-fns「eachWeekendOfInterval」の使い方を徹底解説
使い方
import eachWeekendOfInterval from 'date-fns/eachWeekendOfInterval';
const startDate = new Date(2024, 5, 1); // 2024年6月1日
const endDate = new Date(2024, 6, 30); // 2024年6月30日
const weekends = eachWeekendOfInterval({ start: startDate, end: endDate });
console.log(weekends);
// [
// Sat Jun 01 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 02 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 08 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 09 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 15 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 16 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 22 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 23 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 29 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 30 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時)
// ]
出力
上記の例では、startDate
と endDate
の間にあるすべての週末が weekends
配列に返されます。各要素は、その週末の最初の瞬間を表す Date
オブジェクトです。
オプション
eachWeekendOfInterval
関数は、オプションのパラメータを受け取ることができます。これらのパラメータを使用して、結果をさらに制御できます。
- excludedDates: 特定の日付を結果から除外します。
- firstDayOfWeek: 週の最初の曜日を設定します。デフォルトは 0(日曜日)です。
const weekends = eachWeekendOfInterval({
start: startDate,
end: endDate,
firstDayOfWeek: 1, // 月曜日を週の最初の日に設定
excludedDates: [new Date(2024, 6, 2)], // 6月2日を結果から除外
});
console.log(weekends);
// [
// Sat Jun 01 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 02 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 08 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 09 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 15 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 16 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 22 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 23 2024 00:
特定の月のすべての週末を取得する
import eachWeekendOfInterval from 'date-fns/eachWeekendOfInterval';
const startDate = new Date(2024, 5, 1); // 2024年6月1日
const endDate = new Date(2024, 5, 31); // 2024年6月31日
const juneWeekends = eachWeekendOfInterval({ start: startDate, end: endDate });
console.log(juneWeekends);
// [
// Sat Jun 01 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 02 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 08 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 09 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 15 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 16 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 22 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 23 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 29 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 30 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時)
// ]
import eachWeekendOfInterval from 'date-fns/eachWeekendOfInterval';
const startDate = new Date(2024, 5, 1); // 2024年6月1日
const endDate = new Date(2024, 5, 31); // 2024年6月31日
const fridayWeekends = eachWeekendOfInterval({
start: startDate,
end: endDate,
firstDayOfWeek: 1, // 月曜日を週の最初の日に設定
excludedDates: [new Date(2024, 6, 2)], // 6月2日を結果から除外
});
console.log(fridayWeekends);
// [
// Sat Jun 01 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Fri Jun 07 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 08 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Fri Jun 14 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 15 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Fri Jun 21 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 22 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Fri Jun 28 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 29 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時)
// ]
for ループを使用する
import isWeekend from 'date-fns/isWeekend';
const startDate = new Date(2024, 5, 1); // 2024年6月1日
const endDate = new Date(2024, 6, 30); // 2024年6月30日
const weekends = [];
for (let currentDate = startDate; currentDate <= endDate; currentDate = addDays(currentDate, 1)) {
if (isWeekend(currentDate)) {
weekends.push(currentDate);
}
}
console.log(weekends);
// [
// Sat Jun 01 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 02 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 08 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 09 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 15 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 16 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 22 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 23 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 29 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 30 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時)
// ]
import isWeekend from 'date-fns/isWeekend';
const startDate = new Date(2024, 5, 1); // 2024年6月1日
const endDate = new Date(2024, 6, 30); // 2024年6月30日
const dates = generateDatesRange(startDate, endDate); // startとendの間のすべての日の配列を生成
const weekends = dates.filter(isWeekend);
console.log(weekends);
// [
// Sat Jun 01 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 02 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 08 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 09 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 15 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 16 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 22 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 23 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sat Jun 29 2024 00:00:00 GMT+0200 (夏時間ヨーロッパ標準時),
// Sun Jun 30 2024 00:00:00