はじめに
さて今回は、Javaの日付フォーマット文字についてまとめたいと思います。
つい最近、仕事でシステム開発を行っていたのですが、ふと「yyyy/MM/dd」という日付フォーマット文字を目にしました。
これを見た瞬間、なんで「yyyy/mm/dd」じゃダメなんだ?統一感なくて気持ち悪い・・・と感じました。それで色々調べてみると、どうやらたまたま”MM”だけにしてしまったのではなく、ちゃんと理由があってこのような表記にしているということが分かりました。
絶対忘れると思ったので備忘録的に残しておきます。慣習的な部分もしっかり覚えておくと、認識齟齬が無くなりますからね、これを機会にしっかりと理解しておきましょう!
結論
とりあえず先に結論だけ、以下のフォーマットに従う必要があります。
| 文字 | 意味 | 例 | ここが重要 |
|---|---|---|---|
| yyyy | 年(year) | 2026 | 年はy |
| MM | 月(Month) | 02 | 月は大文字M |
| dd | 日(day) | 24 | 日はd |
| HH | 時(24時間)(hour) | 18 | 24時間は大文字H |
| hh | 時(12時間)(hour) | 02 | 12時間は小文字h |
| mm | 分(minute) | 30 | 分は小文字m |
| ss | 秒(second) | 59 | 秒はs |
「フォーマット文字」とは?何が気になるポイント?
ざっくりフォーマット文字と表記しましたが、この記事の中では、日付・時間を文字列にする際に使用する「置き換え記号」のこと、と捉えておいてください。皆さんも見たことありますよね。
例えば、「yyyy/MM/dd HH:mm:ss」のような感じです。もっと具体的に言うのであれば「2026/03/02 23:18:47」のような形式をどんなものに置き換えてもいいように表記するイメージですね。
見れば分かりますが、それぞれ以下を表します。
- yyyy:年
- MM:月
- dd:日
- HH:時
- mm:分
- ss:秒
ここで思いませんか?
「なんで月は”MM”で分は”mm”なの?逆じゃダメなの?」
「時は”HH”で大文字にする必要性はあるの?」
と・・・、何でもいいんじゃ?と思っていたらダメらしいのでその理由も含めてまとめます。
なぜ大文字/小文字を厳密に分けるの?
理由1:同じアルファベットがあるから
まず一番分かりやすい理由は、同じ頭文字の要素が複数あるからです。
- M:Month(月)
- m:minute(分)
両方とも “m”から始まる英単語なので、文字を増やして区別するより、大文字/小文字で区別したほうが記法を短くできるからというわけですね。
理由2:「1文字ずつに意味が固定」されているから
そもそもフォーマットは「人が雰囲気で読む文字列」ではなく、ちゃんと意味のある文字列です。
なので、適当に”MM”や”mm”を混在してもいいわけではないということです。
例えば「02」は”月”にでも”分”にでもなり得ます。すなわち2月なのか、2分なのか区別するためにも厳密に定義、区別しておく必要があるということですね。
最後に
さて今回は、Javaの日付フォーマット文字についてまとめました。
意外と大文字/小文字を使い分けるというのは重要だということがよく分かりましたね。
余計な誤解、認識違いを生まないためにもしっかりと理解して使い分けましょう。
| 文字 | 意味 | 例 | ここが重要 |
|---|---|---|---|
| yyyy | 年(year) | 2026 | 年はy |
| MM | 月(Month) | 02 | 月は大文字M |
| dd | 日(day) | 24 | 日はd |
| HH | 時(24時間)(hour) | 18 | 24時間は大文字H |
| hh | 時(12時間)(hour) | 02 | 12時間は小文字h |
| mm | 分(minute) | 30 | 分は小文字m |
| ss | 秒(second) | 59 | 秒はs |
以上!
これまでのJava勉強ログとはだいぶ毛色が変わりましたが、過去の記事も読んでもらえると嬉しいです!
Java以外の勉強記事も是非読んでもらえると嬉しいです!





コメント