【保存版】date-fnsの「nextSunday」関数:詳細解説とサンプルコード集


date-fns ライブラリは、JavaScript で日付操作を簡単に行うための便利なツールです。その中でも、Weekday Helpersと呼ばれる機能は、特定の曜日の日付を取得するのに役立ちます。

本記事では、Weekday Helpers の中でも特に nextSunday 関数について、その役割と使い方をわかりやすく解説します。

nextSunday 関数とは?

nextSunday 関数は、現在の日付から最も近い将来の日曜日を取得するためのものです。つまり、今日が木曜日であれば来週の日曜日、今日が日曜日であれば来週の日曜日といった具合です。

この関数は、以下の引数を取ることができます。

  • baseDate (オプション)
    基準となる日付。デフォルトは現在日時です。

使い方

import { nextSunday } from 'date-fns';

const nextSundayDate = nextSunday();
console.log(nextSundayDate); // 次の日曜日を出力

例:特定の日付からの次の日曜日

特定の日付からの次の日曜日を取得したい場合は、baseDate オプションを使用します。

import { nextSunday } from 'date-fns';

const baseDate = new Date(2024, 5, 10); // 2024年6月10日
const nextSundayDate = nextSunday(baseDate);
console.log(nextSundayDate); // 2024年6月16日を出力
  • 国際化に対応しており、様々なロケールで使用できる
  • 基準となる日付を自由に指定できる
  • 特定の曜日の日付を簡単に取得できる


import { nextSunday } from 'date-fns';

// 2024年6月10日からの次の日曜日を取得
const baseDate = new Date(2024, 5, 10);
const nextSundayDate = nextSunday(baseDate);
console.log(nextSundayDate); // 2024年6月16日を出力

次の日曜日をフォーマットされた文字列で取得

import { nextSunday, format } from 'date-fns';

const nextSundayDate = nextSunday();
const formattedDate = format(nextSundayDate, 'yyyy-MM-dd');
console.log(formattedDate); // 2024-06-23を出力

次の日曜日までの残り日数を出力

import { nextSunday, differenceInDays } from 'date-fns';

const today = new Date();
const nextSundayDate = nextSunday();
const daysUntilNextSunday = differenceInDays(nextSundayDate, today);
console.log(`次の日曜日まであと${daysUntilNextSunday}日です。`); // 2024年6月23日までの残り日数を出力
import { nextSunday, startOfWeek, endOfWeek } from 'date-fns';

const nextSundayDate = nextSunday();
const weekStart = startOfWeek(nextSundayDate);
const weekEnd = endOfWeek(nextSundayDate);
console.log(`次の日曜日を含む週の範囲: ${weekStart} - ${weekEnd}`); // 2024年6月23日~2024年6月29日を出力


以下に、nextSunday 関数の代替方法として考えられるいくつかの方法をご紹介します。

手動計算

最もシンプルな代替方法は、手動で計算することです。以下の手順に従って、次の日曜日を計算できます。

  1. 現在の日付を取得します。
  2. 現在の曜日を取得します。
  3. 曜日と現在の日付から、次の日曜日のまでの差日数を計算します。
  4. 差日数を加算して、次の日曜日を取得します。
const today = new Date();
const currentDay = today.getDay(); // 0: 日曜日, 1: 月曜日, 6: 土曜日

const daysUntilNextSunday = 7 - currentDay;
const nextSunday = new Date(today.getTime() + daysUntilNextSunday * 24 * 60 * 60 * 1000);

console.log(nextSunday);

Moment.js ライブラリを使用する

Moment.js は、JavaScript で日付操作を行うもう 1 つのライブラリです。nextSunday 関数の代替として、以下の Moment.js コードを使用できます。

const moment = require('moment');

const nextSunday = moment().add(1, 'Sunday');
console.log(nextSunday.toDate());

Lodash ライブラリを使用する

Lodash は、JavaScript で便利なユーティリティ関数を提供するライブラリです。nextSunday 関数の代替として、以下の Lodash コードを使用できます。

const _ = require('lodash');

const nextSunday = _.addDays(_.floor(Date.now() / 1000 / 60 / 60 / 24) * 24 + 7, 1);
console.log(new Date(nextSunday * 1000));

Day.js ライブラリを使用する

Day.js は、Moment.js に似た軽量な日付操作ライブラリです。nextSunday 関数の代替として、以下の Day.js コードを使用できます。

const Day = require('dayjs');

const nextSunday = Day().add(1, 'sunday').toDate();
console.log(nextSunday);

どの代替方法を選択すべきか?

どの代替方法を選択するかは、状況によって異なります。

  • Lodash のようなユーティリティライブラリを使用している場合は、_.addDays 関数を利用する方法も検討できます。
  • Moment.jsDay.js などのライブラリを既に使用している場合は、それらのライブラリの機能を活用するのが効率的です。
  • シンプルさ を重視する場合は、手動計算 がおすすめです。