【Java】parseを使って、日付の文字列(String)をDate型へ変換する!

文字列を日付に変換するには、DateFormatクラスSimpleDateFormatクラスのparseメソッドを使用します。

変換するには、DateFormatクラスとSimpleDateFormatクラスにアクセスする必要があり、アクセスすることでDateFormatクラスとSimpleDateFormatクラスで準備されているparseメソッドを使用できるようになります。

今回はSimpleDateFormatクラスのparseメソッドを使って以下の場合でString型の日付からDate型への変換していきます。

⚫︎ フォーマットを指定して日付のString型をDate型へ変換する場合
⚫︎ 存在しない日付を指定してString型をDate型へ変換する場合

parseメソッドとは

SimpleDateFormatクラスのparseメソッドとは文字列をDateクラスのインスタンスを戻り値として返すメソッドです。
parseメソッドは文字列をDateクラスのインスタンスを返せない場合は、ParseExceptionのエラーが発生します。

parseメソッドの書き方

まず、java.text.SimpleDateFormatjava.util.Dateをインポートします。

Date型に変換したい文字列を変数に格納します。
例えば、2019年5月7日をDate型で表示したいなら以下のように記載します。

Date型である変数を定義し、SimpleDateFormatをインスタンス化した後に先ほど文字列型で定義した変数をparseメソッドを使ってString型からDate型へ変換します。

次の例では、parseメソッドを使ってString型の変数をからDate型へ変換しています。

出力結果

16/06/2020
Tue Jun 16 00:00:00 UTC 2020

sDate1ではString型で入力していましたが、Date型のdate1をparseメソッド
を使用することで、String型からDate型へ変更した値をdate1へ格納することができました。

parseはtry-catch文で囲む必要がある

SimpleDateFormatに設定した日付のフォーマットと文字列の日付のフォーマットが一致しなかった場合にはParseExceptionのエラーが発生します。
その為、日付の文字列(String)をDate型へ変換する場合はtry-catch文で囲むようにしましょう。

日付文字列からDate型へと変換するサンプルコード

日付文字列からDate型へと変換するサンプルコードを見てみます。

フォーマットを指定して変換する場合

年月日に変換する例

出力結果

16/06/2020 Tue Jun 16 00:00:00 UTC 2020
16-Jun-2020 Tue Jun 16 00:00:00 UTC 2020
06 16, 2020 Tue Jun 16 00:00:00 UTC 2020

年月日曜日に変換する例

出力結果

Thu, Dec 16 2020 Wed Dec 16 00:00:00 UTC 2020

年月日曜日時分秒に変換する例

出力結果

Thu, Dec 16 2020 20:30:50 Wed Dec 16 20:30:50 UTC 2020

年月日時分秒に変換する例

出力結果

16-Jun-2020 20:30:50 Tue Jun 16 20:30:50 UTC 2020

SimpleDateFormatでフォーマットを指定し、parseメソッドを使用することで文字列からDate型へ変換することができました。

存在しない日付を指定して変更する場合

出力結果

Tue Jul 07 06:30:28 UTC 2020

29時89分88秒は存在しませんので日付が繰り上げられるようになります。

今回のポイント

parseメソッドで日付の文字列をDate型へ変換

日付文字列を「Date」インスタンスに変換するにはSimpleDateFormatクラスのparseメソッドを使用する

⚫︎ 「SimpleDateFormat」クラスを使用することで、日付文字列を「Date」インスタンスに変換することができ、指定したStringのフォーマットからDate型に変換できる

⚫︎ パターン文字列、ロケールの指定方法も、日付を文字列に変換する場合と同様に行い、年を指定しなかった場合は、1970年になり、日を指定しなかった場合は、1日になる

⚫︎ その他のフィールドが指定されなかった場合には、それぞれ「0」が設定され、存在しない日時が指定された場合は、その日付から繰り上げる

(例えば、4月31日と指定した場合は5月1日となる)

⚫︎ SimpleDateFormatクラスのsetLenientメソッドで「false」を指定することで、4月31日などの存在しない日時があった場合、「ParseException」例外が発生させるなど日付の設定を厳密に行うことができる

Writer

ST

株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報