JavaScriptでのdate-fns、moment、dayjsによる日付フォーマット
date-fns、moment.js、Day.jsライブラリを使用したJavaScript日付フォーマットをマスター。トークン構文の比較、Intl.DateTimeFormatの解説、実用的なコード例。
Language-Specific
詳細な説明
JavaScript日付フォーマット
JavaScriptのネイティブDateオブジェクトにはフォーマットオプションが限られています。ほとんどの開発者はカスタムフォーマット文字列にライブラリを使用します。最も人気のある3つのライブラリ — date-fns、moment.js、Day.js — は非常に似たトークン構文を共有しています。
ネイティブJavaScriptオプション
const d = new Date();
d.toISOString(); // "2026-02-28T05:30:00.000Z"
d.toLocaleDateString(); // ロケール依存
d.toLocaleString("en-US"); // "2/28/2026, 2:30:00 PM"
Intl.DateTimeFormat APIはロケール対応のフォーマットを提供します:
new Intl.DateTimeFormat("ja-JP", {
year: "numeric",
month: "long",
day: "numeric",
}).format(d); // "2026年2月28日"
date-fns / Day.js / momentトークン構文
| トークン | 出力 | 説明 |
|---|---|---|
yyyy |
2026 | 完全な年 |
MM |
02 | 月(ゼロパディング) |
dd |
28 | 日(ゼロパディング) |
HH |
14 | 24時間制の時(ゼロパディング) |
hh |
02 | 12時間制の時(ゼロパディング) |
mm |
30 | 分 |
ss |
00 | 秒 |
a |
PM | AM/PM |
ライブラリ比較
// date-fns
import { format } from "date-fns";
format(new Date(), "yyyy-MM-dd HH:mm:ss");
// Day.js
import dayjs from "dayjs";
dayjs().format("YYYY-MM-DD HH:mm:ss");
// moment.js(レガシー)
import moment from "moment";
moment().format("YYYY-MM-DD HH:mm:ss");
注意:moment.jsは大文字のYYYYとDDを使用し、date-fnsは小文字のyyyyとddを使用します。Day.jsはmomentの規約に従います。
ユースケース
JavaScript日付フォーマットはすべてのWebアプリケーションで必要です:ユーザープロフィールの日付表示、チャットメッセージのタイムスタンプ、日付ベースのファイル名生成、ログエントリの人間が読める形式、日付ピッカーコンポーネントの構築。date-fns(ツリーシェイク可能)、Day.js(軽量)、moment.js(レガシー)の選択はバンドルサイズ要件に依存します。