date-fns の "Weekday Helpers" における "previousSaturday" の概要と実装例


import { previousSaturday } from 'date-fns';

const today = new Date();
const lastSaturday = previousSaturday(today);

console.log(lastSaturday); // 土曜日の日付が出力されます
  • previousSaturday 関数はオプション引数として locale を受け取り、ロケールに基づいて曜日を判定することができます。

代替手段

previousSaturday 関数を使用せずに、以下のコードで同様の機能を実現することもできます。

import { isSaturday } from 'date-fns';

const today = new Date();
let lastSaturday = today;

while (!isSaturday(lastSaturday)) {
  lastSaturday.setDate(lastSaturday.getDate() - 1);
}

console.log(lastSaturday); // 土曜日の日付が出力されます

このコードは、**isSaturday関数を使用して日付が土曜日かどうかを判定し、**lastSaturday 変数を遡りながら最新の土曜日を見つけています。



import { previousSaturday } from 'date-fns';

const specificDate = new Date('2024-07-10'); // 特定の日付を設定
const lastSaturday = previousSaturday(specificDate);

console.log(lastSaturday); // 2024-07-06 (2024年7月10日よりも前に来る最新の土曜日)

オプション引数 locale を使用してロケールに基づいた曜日判定

import { previousSaturday } from 'date-fns';

const today = new Date();
const lastSaturdayJP = previousSaturday(today, { locale: ja }); // 日本語ロケールを設定
const lastSaturdayEN = previousSaturday(today, { locale: en }); // 英語ロケールを設定

console.log(lastSaturdayJP); // 土曜日の日付 (日本語表記)
console.log(lastSaturdayEN); // Saturday (英語表記)

isSaturday 関数を使用した代替手段

import { isSaturday } from 'date-fns';

const today = new Date();
let lastSaturday = today;

while (!isSaturday(lastSaturday)) {
  lastSaturday.setDate(lastSaturday.getDate() - 1);
}

console.log(lastSaturday); // 土曜日の日付

特定の日付範囲内のすべての土曜日を取得

import { eachSaturday } from 'date-fns';

const startDate = new Date('2024-06-01');
const endDate = new Date('2024-07-10');

const allSaturdays = [];

eachSaturday(startDate, endDate, (saturday) => {
  allSaturdays.push(saturday);
});

console.log(allSaturdays); // 2024年6月1日、6月8日、6月15日、6月22日、7月6日の日付を含む配列
import { eachSaturday } from 'date-fns';
import { format } from 'date-fns/esm';

const startDate = new Date('2024-06-01');
const endDate = new Date('2024-07-10');

const allSaturdays = [];

eachSaturday(startDate, endDate, (saturday) => {
  const day = format(saturday, 'EEE'); // 曜日を取得
  const date = format(saturday, 'yyyy-MM-dd'); // 日付を取得

  allSaturdays.push({ day, date });
});

console.log(allSaturdays); // [{ day: 'Sat', date: '2024-06-01' }, { day: 'Sat', date: '2024-06-08' }, ...]


"previousSaturday" の代替方法

手動計算

最も基本的な方法は、日付操作ライブラリを使用せずに手動で計算することです。以下のコードは、JavaScript で手動で previousSaturday を計算する方法を示しています。

function previousSaturday(date) {
  const day = date.getDay();
  const diff = day === 0 ? 6 : day - 1;

  const lastSaturday = new Date(date.setDate(date.getDate() - diff));
  return lastSaturday;
}

const today = new Date();
const lastSaturday = previousSaturday(today);

console.log(lastSaturday); // 土曜日の日付が出力されます

このコードは、まず date.getDay() 関数を使用して現在の曜日を取得します。その後、diff 変数に現在の曜日と土曜日までの差を設定します。最後に、date.setDate() 関数を使用して lastSaturday 変数を設定し、最新の土曜日を取得します。

Moment.js ライブラリを使用

Moment.js は、JavaScript で日付操作を行うためのもう 1 つのライブラリです。previousSaturday 関数に相当する Moment.js の方法は以下のとおりです。

import moment from 'moment';

const today = moment();
const lastSaturday = today.subtract(1, 'week').startOf('day');

console.log(lastSaturday.format('YYYY-MM-DD')); // 土曜日の日付が出力されます

このコードは、moment 関数を使用して現在の日付を取得し、subtract メソッドを使用して 1 週間前の日付を設定します。その後、startOf('day') メソッドを使用してその日の最初の時刻を設定し、最新の土曜日を取得します。

Lodash ライブラリを使用

Lodash は、JavaScript でさまざまなユーティリティ関数を提供するライブラリです。previousSaturday 関数に相当する Lodash の方法は以下のとおりです。

import { lastSaturday } from 'lodash';

const today = new Date();
const lastSaturday = lastSaturday(today);

console.log(lastSaturday); // 土曜日の日付が出力されます

このコードは、lodash ライブラリから lastSaturday 関数をインポートし、現在の日付を渡して最新の土曜日を取得します。

Underscore ライブラリを使用

import { lastSaturday } from 'underscore';

const today = new Date();
const lastSaturday = lastSaturday(today);

console.log(lastSaturday); // 土曜日の日付が出力されます

previousSaturday 関数の代替方法はいくつかありますが、それぞれに長所と短所があります。最も適切な方法は、個々のニーズと要件によって異なります。

  • 手動計算: 最も基本的な方法ですが、最もコード量が多くなります。
  • Moment.js ライブラリ: date-fns ライブラリと同様の機能を提供しますが、追加のライブラリをインストールする必要があります。
  • Lodash ライブラリ: シンプルで使いやすい方法ですが、date-fns ライブラリほど多くの機能を提供していません。
  • Underscore ライブラリ: Lodash ライブラリと似ていますが、Underscore ライブラリを使用している場合は便利な方法です。