JavaScriptでのdate-fns、moment、dayjsによる日付フォーマット

date-fns、moment.js、Day.jsライブラリを使用したJavaScript日付フォーマットをマスター。トークン構文の比較、Intl.DateTimeFormatの解説、実用的なコード例。

Language-Specific

詳細な説明

JavaScript日付フォーマット

JavaScriptのネイティブDateオブジェクトにはフォーマットオプションが限られています。ほとんどの開発者はカスタムフォーマット文字列にライブラリを使用します。最も人気のある3つのライブラリ — date-fnsmoment.jsDay.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は大文字のYYYYDDを使用し、date-fnsは小文字のyyyyddを使用します。Day.jsはmomentの規約に従います。

ユースケース

JavaScript日付フォーマットはすべてのWebアプリケーションで必要です:ユーザープロフィールの日付表示、チャットメッセージのタイムスタンプ、日付ベースのファイル名生成、ログエントリの人間が読める形式、日付ピッカーコンポーネントの構築。date-fns(ツリーシェイク可能)、Day.js(軽量)、moment.js(レガシー)の選択はバンドルサイズ要件に依存します。

試してみる — Date Format Reference & Tester

フルツールを開く