【超解説】JavaScriptで昨日を計算する2つの方法と便利ライブラリ集
JavaScriptで昨日を計算する方法
方法1:Dateオブジェクトを使う
new Date()
を使って今日の日付を取得します。setDate()
メソッドを使って、取得した日付から1日を引きます。- 結果をフォーマットして表示します。
const today = new Date();
today.setDate(today.getDate() - 1);
const yesterday = today.toLocaleDateString();
console.log(yesterday); // 2024-07-05
方法2:ミリ秒単位のタイムスタンプを使う
Date.now()
を使って現在時刻をミリ秒単位で取得します。- 1日分のミリ秒数 (24時間 * 60分 * 60秒 * 1000ミリ秒) を引いて、昨日のミリ秒数を求めます。
new Date()
を使ってミリ秒数から日付オブジェクトを作成します。
const now = Date.now();
const yesterdayMs = now - 24 * 60 * 60 * 1000;
const yesterday = new Date(yesterdayMs);
const formattedYesterday = yesterday.toLocaleDateString();
console.log(formattedYesterday); // 2024-07-05
- 上記のコードは、日本国内の標準時(JST)を基準としています。
- 閏年などの場合、正確な計算には考慮する必要があります。
- より複雑な日付処理には、Moment.jsなどのライブラリを使うこともできます。
// 今日の日付を取得
const today = new Date();
// 昨日を取得
const yesterday = new Date();
yesterday.setDate(today.getDate() - 1);
// 昨日の年、月、日を取得
const yesterdayYear = yesterday.getFullYear();
const yesterdayMonth = yesterday.getMonth() + 1; // 月は0始まりなので、1を足す
const yesterdayDate = yesterday.getDate();
// 昨日の日付をフォーマットして表示
const formattedYesterday = `${yesterdayYear}-${yesterdayMonth.toString().padStart(2, '0')}-${yesterdayDate.toString().padStart(2, '0')}`;
console.log(formattedYesterday); // 出力例: 2024-07-05
// 現在時刻をミリ秒単位で取得
const now = Date.now();
// 1日分のミリ秒数
const oneDayMs = 24 * 60 * 60 * 1000;
// 昨日のミリ秒数を求める
const yesterdayMs = now - oneDayMs;
// 昨日の日付オブジェクトを作成
const yesterday = new Date(yesterdayMs);
// 昨日の年、月、日を取得
const yesterdayYear = yesterday.getFullYear();
const yesterdayMonth = yesterday.getMonth() + 1; // 月は0始まりなので、1を足す
const yesterdayDate = yesterday.getDate();
// 昨日の日付をフォーマットして表示
const formattedYesterday = `${yesterdayYear}-${yesterdayMonth.toString().padStart(2, '0')}-${yesterdayDate.toString().padStart(2, '0')}`;
console.log(formattedYesterday); // 出力例: 2024-07-05
説明
- コードでは、まず今日の日付を取得します。
- その後、方法1 では
setDate()
メソッドを使って昨日を計算し、方法2 ではミリ秒単位のタイムスタンプを使って昨日を計算します。 - どちらの方法でも、昨日の年、月、日を取得して、フォーマットされた文字列として表示します。
toString().padStart(2, '0')
を使って、月や日を2桁で表示するようにしています。
- 上記のコードはあくまで一例です。必要に応じて、フォーマットや処理内容を変更してください。
- 閏年などの場合、より正確な計算にはライブラリを使うことをおすすめします。
const todayStr = new Date().toLocaleDateString();
const yesterday = new Date(todayStr.replace(/(\d{4})-(\d{1,2})-(\d{1,2})/, '$1-$2-$3' - 1));
const formattedYesterday = yesterday.toLocaleDateString();
console.log(formattedYesterday); // 出力例: 2024-07-05
方法4:Moment.jsライブラリを使う
// Moment.jsライブラリをインストールする
// npm install moment
const moment = require('moment');
const yesterday = moment().subtract(1, 'days').format('YYYY-MM-DD');
console.log(yesterday); // 出力例: 2024-07-05
方法5:Lodashライブラリを使う
// Lodashライブラリをインストールする
// npm install lodash
const _ = require('lodash');
const yesterday = _.addDays(new Date(), -1);
const formattedYesterday = yesterday.toLocaleDateString();
console.log(formattedYesterday); // 出力例: 2024-07-05
それぞれの方法のメリットとデメリット
- 方法1:Dateオブジェクトを使う: シンプルでわかりやすい。ライブラリのインストールが不要。
- デメリット: 閏年などの場合の考慮が必要。
- 方法2:ミリ秒単位のタイムスタンプを使う: 精度が高い。
- デメリット: 少しわかりにくい。
- 方法3:フォーマット済み文字列を使う: シンプルでわかりやすい。
- デメリット: 閏年などの場合の考慮が必要。フォーマットの形式に依存する。
- 方法4:Moment.jsライブラリを使う: 多くの便利な日付処理機能が使える。閏年なども自動的に考慮してくれる。
- デメリット: ライブラリのインストールが必要。
- 方法5:Lodashライブラリを使う: Moment.jsと同様に多くの便利な日付処理機能が使える。
JavaScriptで昨日を計算するには、様々な方法があります。それぞれの方法のメリットとデメリットを理解した上で、状況に合わせて最適な方法を選択してください。
javascript date