JavaScriptで日付を「YYYY-MM-DD」形式にする方法
JavaScriptで日付を「2026-06-20」のようなYYYY-MM-DD形式にしたい場面はよくあります。実は標準で簡単な整形関数がなく、少し工夫が必要です。確実な方法をコピペで使える形で紹介します。
const d = new Date();
const y = d.getFullYear();
const m = String(d.getMonth() + 1).padStart(2, '0');
const day = String(d.getDate()).padStart(2, '0');
const result = `${y}-${m}-${day}`;
// 例: 2026-06-20| 処理 | ポイント |
|---|---|
| getMonth() + 1 | 月は0始まりなので+1する |
| padStart(2, '0') | 1桁の数字をゼロ埋め |
| テンプレート文字列 | ハイフンでつなぐ |
ポイントを理解する
2つの落とし穴に注意します。
- 月は0始まり
- getMonth()は0〜11を返すため、+1が必要です。これを忘れると月が1つずれます。
- ゼロ埋めが必要
- 6月を06と表示するには、padStart(2, '0')で2桁にそろえます。これがないと06が6になってしまいます。
コツ:手動で組み立てる方法はローカル時間で正確に整形できるのが利点。getMonth()の+1とpadStartのゼロ埋め、この2点を押さえれば確実です。
toISOStringの注意
手軽な方法もありますが、注意点があります。
const s = new Date().toISOString().slice(0, 10);
// UTC基準なので日付がずれることがある- 手軽だがUTC基準…toISOStringは協定世界時で出力する。
- 日付がずれることも…時差により、日本時間と1日ずれる場合がある。
- 確実なのは手動組み立て…ローカル時間で正確にしたいなら最初の方法を。
注意:toISOString().slice(0,10)は手軽ですがUTC(協定世界時)基準です。日本時間の深夜などでは日付が1日ずれることがあります。ローカルの日付を正確に出したいなら、手動で組み立てる方法が確実です。
あわせて読みたい:JavaScriptで配列の重複を削除する方法(Set)/Pythonでリストの重複を削除する方法(順序を保つ/保たない)/JavaScriptの記事一覧
まとめ
YYYY-MM-DD形式はgetFullYear・getMonth()+1・getDate()をpadStartでゼロ埋めし、テンプレート文字列でつなぐのが確実。月が0始まりな点とゼロ埋めが要注意です。toISOStringは手軽ですがUTC基準で日付がずれることがあるため、ローカル時間には手動組み立てを使いましょう。
よくある質問
JavaScriptで日付をYYYY-MM-DDにするには?
getFullYear()・getMonth()+1・getDate()を取得し、月日をpadStart(2,'0')でゼロ埋めして、テンプレート文字列で `${y}-${m}-${day}` とつなぐのが確実です。
getMonth()に+1するのはなぜ?
getMonth()は月を0〜11で返すためです。1月が0なので、表示用には+1が必要です。これを忘れると月が1つずれてしまいます。
padStartは何のため?
1桁の数字をゼロ埋めして2桁にそろえるためです。padStart(2,'0')とすると6月が06になります。これがないと06が6と表示されてしまいます。
toISOStringを使うときの注意は?
toISOString().slice(0,10)は手軽ですがUTC(協定世界時)基準です。時差により日付が1日ずれることがあるため、ローカル時間には手動組み立てが確実です。