【Java入門】SimpleDateFormatで日付フォーマットの設定

書いた人 ヤマシタ
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

Javaには日付を表示するときのフォーマットを設定することができます。

この記事では、日付のフォーマットについて、

【基礎】SimpleDateFormatクラスの日付のフォーマットとは
【基礎】yyyy/MM/ddのフォーマットを設定する方法
【基礎】他の日付のフォーマットに変更する方法
【発展】日付をString型に変換する方法
【発展】日付パターンをチェックする方法

などの基礎から発展した使い方についても解説していきます。

今回はそんな日付のフォーマット処理について、さまざまな方法をわかりやすく解説します!

SimpleDateFormatクラスの日付パターンとは

日付のフォーマットを設定するには、SimpleDateFormatクラスを使用して、インスタンスの引数に日付フォーマットを指定する必要があります。

SimpleDateFormatクラスを使用するには、以下のパッケージをインポートします。

日付パターン文字列について表にまとめました。

文字説明出力例(記述例)
G紀元AD(G)
y1996(yyyy); 96(yy)
MJuly(MMMM); Jul(MM); 07(MM)
w年における週27(ww)
W月における週2(W)
D年における日189(DDD)
d月における日10(dd)
F月における曜日2(F)
E曜日の名前Tuesday(EEEEEEE); Tue(EEE);
u
曜日の番号(1:月曜、・・・7:日曜)
1(u)
a午前/午後PM(a)
H一日における時(0 - 23)00(HH)
k一日における時(1 - 24)24(kk)
K午前/午後の時(0 - 11)00(KK)
h午前/午後の時(1 - 12)12(hh)
m30(mm)
s55(ss)
Sミリ秒978(SSS)
z一般的なタイムゾーンPacific Standard Time; PST; GMT-08:00

記述するパターン例については以下のとおりです。

パターン表示例
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ‘’yy”Wed, Jul 4, '01
"h:mm a"12:08 PM

日付パターンは、大文字と小文字が明確に区別されていますので、指定時には注意しましょう。

なおオラクルの公式サイトには、日付パターンの詳細が記載されています。
https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html

yyyy/MM/ddのフォーマットで設定する方法

以下に“yyyy/MM/dd”の日付パターンでフォーマットを設定する方法を記述します。

実行結果:

このサンプルコードでは、SimpleDateFormatクラスを使用して、引数に“yyyy/MM/dd”の日付パターンでフォーマットを指定しています。

そして、SimpleDateFormatクラスの日付パターンを返すformatメソッドを使用しています。

引数にCalendarクラスのgetTimeメソッドを指定して現在の日時を取得しています。

他の日付フォーマットに変更する方法

日付のフォーマットを変更する場合は、SimpleDateFormatクラスのapplyPatternメソッドを使用します。

そしてSimpleDateFormatクラスのインスタンス同様、引数にフォーマットパターンを指定します。

以下に日付フォーマットを変更する方法を記述します。

実行結果:

Calendarクラスのフォーマットについては、以下の記事でも詳しく解説しています!

Date型とString型の相互変換

Date型で処理をしてString型に変換したり、また逆にString型の日付データからDate型に変更して処理を行う場合もあります。

Date型をString型に変換する方法やString型をDate型に変更する方法についてみていきましょう!

Date型をString型に変換する

Date型をString型に変換するためには、StringクラスのvalueOfメソッドを指定して、引数に日付型を指定します。

以下にDate型をString型に変換する方法を記述します。

実行結果:

String型をDate型に変換する


String型の日付をDate型に変換
するには、SimpleDateFormatクラスのparseメソッドを使用します。

実行結果:

SimpleDateFormatクラスのparseメソッドを使うにはthrows句を使ってParseExceptionなどに例外を投げるか、try-catch構文で例外処理を行う必要がありますので、注意しましょう。

なお、Stringのさまざまな型変換については、以下の記事で詳しく解説しています!

日付パターンをチェックする方法

SimpleDateFormatクラスは、日付パターンを存在しないパターンなどに設定すると、IllegalArgumentExceptionの例外が発生します。

しかし、日付設定時に存在しない日付を設定しても、例外は発生しません

そのため、設定した日付が正しいかチェックするには、日付を設定する前にSimpleDateFormatクラスのsetLenientメソッドを使用します。

setLenientメソッドの引数にはfalseを設定する必要があります。

以下に設定した日付をチェックする方法を記述します。

実行結果:

このサンプルコードでは存在しない日付”2017/4/35”を設定しました。

事前にSimpleDateFormatクラスのsetLenientメソッドにfalseを指定しておけば、日付設定時に日付の妥当性をチェックしてくれます。

Date型についてもっと詳しく知りたい方へ

Dateクラスのさまざまな使い方については以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、日付のフォーマット指定について基本的な方法やString型に変換する方法、日付のチェック方法などを説明しました。

日付のフォーマットはさまざまなパターンで出力することができますので、この機会に覚えておきましょう!

もし日付のフォーマットを指定する方法を忘れてしまったら、この記事を思い出してくださいね!

Javaカリキュラム無料公開中!
この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーランスをされている市川友哉さん。33歳で、プログラミングを学び始め、4ヶ月という短い期間でフリーランスエンジニアとして独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ヤマシタ

フリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、今まで200本以上の執筆経験があります