Javaで日付を扱う際、「月や日を2桁表示したい(01→1ではなく01のまま)」あるいは「逆にゼロを削除して自然な表示にしたい」という場面はよくあります。
この記事では、**ゼロパディング(ゼロ埋め)とゼロサプレス(ゼロ削除)**の両方を、実際のコード例を交えて分かりやすく解説します。
🧩 ゼロパディングとは?
ゼロパディング(zero padding)とは、数値や日付を指定桁数に揃えるために先頭に0を追加する処理のことです。
例えば「1」を「01」や「001」に整えることで、フォーマットがそろい、ソートや表示が安定します。
例:
| 元の値 | ゼロパディング後 |
|---|---|
| 1 | 01 |
| 5 | 05 |
| 10 | 10 |
💡 String.format() を使ったゼロパディング
最もシンプルな方法は String.format() です。
桁数を %02d のように指定することで、足りない桁を自動的に0で埋めてくれます。
ポイント:
-
%02d→ 2桁に揃えて左側を0埋め -
%03d→ 3桁に揃える(例:007 など)
📅 DateTimeFormatter を使ったゼロパディング
LocalDateやLocalDateTimeを使う場合は、DateTimeFormatterの書式指定でゼロパディングが自動適用されます。
MMやddといった2桁指定をすることで、常にゼロパディングされた日付が得られます。
🔻 ゼロサプレス(ゼロ削除)とは?
ゼロサプレス(zero suppress)とは、先頭の0を削除して自然な表示にすることを指します。
たとえば「01月」を「1月」に、「09日」を「9日」に整形するようなケースです。
🧮 getMonthValue()とgetDayOfMonth()を使う方法
LocalDateのメソッドを利用すれば、もともと整数型の値をそのまま出力できるため、ゼロサプレスした形で取得できます。
🧠 DecimalFormatで数値的に制御する
もし整数値を柔軟に扱いたい場合は、DecimalFormatを使うと便利です。
"00" → 常に2桁ゼロ埋め"#" → 不要なゼロを省略(ゼロサプレス)
🔄 実用例:ゼロ埋め⇔ゼロ削除の切り替え
アプリケーションによっては、状況に応じて表示形式を切り替えたい場合もあります。
✅ まとめ
| 処理 | 主な方法 | 例 |
|---|---|---|
| ゼロパディング | String.format("%02d") / DateTimeFormatter("MM") | 01, 05 |
| ゼロサプレス | getMonthValue() / DecimalFormat("#") | 1, 5 |
ゼロパディングはフォーマットの統一やログ整形に便利で、ゼロサプレスは人が読む表示に適しています。
目的に応じてどちらを使うか選びましょう。
