【JavaScript】日付のフォーマットを変換する方法

JavaScriptで日付を扱う際に、特定のフォーマットに変換する必要があることはよくあります。この記事では、JavaScriptで日付をフォーマットするさまざまな方法を紹介します。

スポンサーリンク

toLocaleDateString() メソッドを使用する

JavaScriptの Date オブジェクトの toLocaleDateString() メソッドを使用することで、ロケールに基づいた日付文字列を取得できます。以下はその例です。

const date = new Date();
const formattedDate = date.toLocaleDateString('ja-JP', { year: 'numeric', month: '2-digit', day: '2-digit' });
console.log(formattedDate); // 出力例: "2024/03/24"

Intl.DateTimeFormat オブジェクトを使用する

Intl.DateTimeFormat オブジェクトを使用することでも、日付をフォーマットできます。以下はその例です。

const date = new Date();
const formatter = new Intl.DateTimeFormat('ja-JP', { year: 'numeric', month: '2-digit', day: '2-digit' });
const formattedDate = formatter.format(date);
console.log(formattedDate); // 出力例: "2024/03/24"

date-fns ライブラリを使用する

date-fns ライブラリを使用することで、日付のフォーマットが簡単になります。以下はその例です。

const { format } = require('date-fns');
const formattedDate = format(new Date(), 'yyyy/MM/dd', { locale: require('date-fns/locale/ja') });
console.log(formattedDate); // 出力例: "2024/03/24"

moment.js ライブラリを使用する (非推奨)

moment.js は非推奨とされていますが、以下はその使用例です。

const moment = require('moment');
const formattedDate = moment().format('YYYY/MM/DD');
console.log(formattedDate); // 出力例: "2024/03/24"

日付の形式について

yy: 2桁の年 (例: 22、24)
yyyy: 4桁の年 (例: 2022、2024)
M: 月を表す数値 (1-12)
MM: 2桁の月 (01-12)
MMM: 月の省略名 (Jan、Feb、Mar など)
MMMM: 月のフルネーム (January、February、March など)
d: 月内の日付を表す数値 (1-31)
dd: 2桁の日付 (01-31)
D: 週内の日数 (0-6、0が日曜日)
E: 曜日の省略名 (Sun、Mon、Tue など)
EEE: 曜日の短縮形 (Sun、Mon、Tue など)
EEEE: 曜日のフルネーム (Sunday、Monday、Tuesday など)
H: 24時間表記の時 (0-23)
HH: 2桁の24時間表記の時 (00-23)
h: 12時間表記の時 (1-12)
hh: 2桁の12時間表記の時 (01-12)
m: 分 (0-59)
mm: 2桁の分 (00-59)
s: 秒 (0-59)
ss: 2桁の秒 (00-59)
S: ミリ秒 (0-999)
SSS: 3桁のミリ秒 (000-999)
a: AM/PM 指示子 (AM、PM)

よくある質問(FAQ)

Q. JavaScriptで日付をフォーマットするには?
A. DateオブジェクトのgetFullYear()・getMonth()+1・getDate()などを組み合わせて文字列を作ります。Intl.DateTimeFormatを使えばロケール対応の柔軟なフォーマットが可能です。
Q. 日付をYYYY-MM-DD形式にする最も簡単な方法は?
A. new Date().toISOString().slice(0, 10)でUTC基準のYYYY-MM-DD形式が取得できます。ローカル時間基準にする場合は年月日を個別に取得して連結する必要があります。
Q. DateオブジェクトのgetMonth()が0始まりなのはなぜですか?
A. JavaScriptの仕様上、月は0(1月)〜11(12月)で表現されます。表示する際は必ず+1してください。getDate()(日)やgetFullYear()(年)は直感的な数値を返します。

まとめ

以上がJavaScriptで日付をフォーマットする方法です。用途に応じて、最適な方法を選択してください。