Knowledge Diary

日付を0埋め(前ゼロ/ゼロパディング)にして桁数を揃える方法【JavaScript】

Published: Updated:

日付を0埋め(前ゼロ/ゼロパディング)にして桁数を揃える方法【JavaScript】

こんにちは、Webデザイナーの 夢拓(MUHIRO)です。

Web開発の現場では、日付の表示形式を整えるシーンが頻繁に訪れます。
たとえば、「2024年4月8日」という日付を、「2024-04-08」というフォーマットに整えたい場合、月や日が一桁(4や8)だと表示が不格好になることがあります。

そんなときに必要なのが「ゼロパディング(前ゼロ)」という処理です。
JavaScriptでは数値にそのままゼロを追加することができないため、特定の方法で処理する必要があります。

この記事はこんな方におすすめ!

  • JavaScriptで Date オブジェクトを扱っている方
  • 日付や時間の表示形式を整えたい方
  • フロントエンドでカレンダーや予約機能などを実装している方
  • CSVファイルやログ出力で、日付を整えた形式で保存したい方
  • padStart() の使い方を知りたい方

この記事では、JavaScriptでゼロパディングを使って日付の表示を整える方法を、初心者でもわかるように丁寧に解説します。
padStart() の使い方を中心に、日付フォーマットを整える関数の作り方まで、実用的な情報を詰め込みました。

この記事を読んで、日付フォーマットを整える実践的なテクニックを使用して最適・高度な・柔軟なWebサイトを制作いただけるようになります!

それでは、どうぞ!

Index

CloseOpen

ゼロパディング(前ゼロ)とは?

ゼロパディングとは、数値やデータを表示・処理する際に、指定された桁数に満たない部分を「0」で埋める手法を指します。これにより、桁数を揃えたりデータ形式を統一したりすることが可能になります。

たとえば、
1 → 01
9 → 09
このように桁数をそろえることで、見た目が美しくなり、ソートや比較といった処理もスムーズになります。
日付や時刻、ファイル名、ログデータなどでは、ゼロパディングが非常に重要です。

JavaScriptでゼロパディングを行う方法

padStart() を使う方法(推奨)

JavaScriptでは、文字列メソッドの padStart() を使うことで簡単にゼロパディングが可能です。

JavaScript

    const day = String(8).padStart(2, '0');
    console.log(day); // "08"

このコードでは、まず8をString()で文字列に変換し、それを padStart(2, '0') で「2桁になるまで'0'を左に追加する」処理をしています。

三項演算子を使う旧来の方法

古い書き方では、次のような方法もよく使われていました。

JavaScript

const day = 8;
const paddedDay = day < 10 ? '0' + day : String(day);
console.log(paddedDay); // "08"

こちらも同様の結果が得られますが、可読性や保守性の面で padStart() を使う方がおすすめです。

日付を「YYYY-MM-DD」形式に整える

JavaScriptのDateオブジェクトを使って、現在の日付を「2024-04-08」のような形式に整える方法を紹介します。

JavaScript

const date = new Date();

const year = date.getFullYear();
const month = String(date.getMonth()+ 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');

const formatted = `${year}-${month}-${day}`;
console.log(formatted); // 例: "2024-04-08"

date.getMonth()に注意の注意点

date.getMonth() は0(1月)〜11(12月)を返すため、月として表示する際には+1を忘れずに加える必要があります。

再利用しやすいように関数を作る

日付フォーマット処理は何度も使う場面があるため、関数化しておくと非常に便利です。

JavaScript

function formatDate(date){
    if (!(date instanceof Date)|| isNaN(date))return null;
    const year = date.getFullYear();
    const month = String(date.getMonth()+ 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
}

const today = new Date();
console.log(formatDate(today)); // 例: "2024-04-08"

この関数を使えば、任意の日付オブジェクトを「YYYY-MM-DD」の形式で出力できます。ログ出力、ファイル命名、ユーザー表示など、あらゆる場面で使えます。

日付オブジェクトでない場合はNULLを返す

以下のようにガード節を追加して、引数が日付オブジェクトでない場合に null を返すようにできます。
instanceof Dateを使用して、引数がDateオブジェクトかどうかを判定します。

ガード節(Guard Clause)とは

ガード節とは、プログラムにおける条件分岐のテクニックで、特定の条件が満たされた場合に早期に処理を終了させる方法を指します。これにより、コードのネストを浅くし、可読性や保守性を向上させることができます。

JavaScript

if (!(date instanceof Date)|| isNaN(date))return null;
  1. 型チェックdate instanceof Dateを使って、引数がDateオブジェクトかどうかを確認します。
  2. 有効な日付かの確認isNaN(date) を使って、無効な日付(例: new Date('invalid'))の場合も検出します。

JavaScrip

console.log(formatDate(new Date())); // 現在の日付をフォーマット (例: "2025-04-09")
console.log(formatDate("2025-04-09")); // null (日付オブジェクトではない)
console.log(formatDate(new Date("invalid"))); // null (無効な日付)

このコードは、引数が正しい日付オブジェクトである場合のみフォーマットを行い、それ以外の場合は安全に null を返します。

よくある注意点・間違いやすいポイント

padStart()は数値には使えない

padStart()は文字列メソッドのため、数値には直接使えません。

JavaScrip

String(5).padStart(2, '0'); // OK
5.padStart(2, '0'); // エラー

padStart()古いブラウザでは非対応

padStart() はES2017(ES8)から利用可能です。Internet Explorerでは動作しないため、必要に応じてポリフィルや別の方法を検討しましょう。

この記事に関連するよくあるご質問

Q
文字列メソッドとは?
A

文字列メソッドとは、JavaScriptで文字列に対して使える関数のことです。文字列を操作・加工するために使われ、たとえば「長さを調べる」「一部を取り出す」「文字を置き換える」など、さまざまな処理が可能です。

まとめ

いかでしたでしょうか?
今回の記事では、avaScriptで日付をゼロパディングして桁数を揃える方法を、基本から実践的なコード例まで詳しくご紹介しました。

今回のポイントをまとめますと、次のとおりです。

今回の記事のまとめ

  • padStart() を使えば簡単にゼロパディングできる
  • Dateオブジェクトから取り出した値(特に月)は+1に注意
  • 再利用できる関数を作成することで見通しの良いコードになる

他にもJavaScriptに関する技術や実用テクニックを随時発信しています。
「役に立った」と思っていただけた方は、ぜひブックマークやSNSでのシェアをお願いいたします!

最後までお読みいただきありがとうございました!

免責事項

  • 当ブログでは、執筆者の経験に基づいた技術情報や知識を提供していますが、その正確性や普遍性を保証するものではありません。情報は執筆時点のものであり、技術の進展により古くなる可能性があります。これらの情報を利用する際は、自己責任で行ってください。必要に応じて専門家の助言を求めることをお勧めします。
  • 当ブログで提供するプログラムコードは、執筆者の最善の知識に基づいていますが、その正確性や完全性を保証するものではありません。コードの利用や実行により生じた損害や問題については、一切の責任を負いかねます。コードの使用は、自己責任で行ってください。
  • 当サイトで使用しているスクリーンショット画像について、著作権はサイトの権利者に帰属します。掲載に不都合がある場合、お手数ですがお問い合わせフォームよりご連絡ください。
  • 当サイトからリンクよって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いかねますのでご了承ください。
  • 当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。