こんにちは!エンジニアの中沢です。
Javaには日付を扱うDate型があります。この記事では、String型と日付型(Date型)の変換方法について
- Date型とは
- 文字列を日付型(Date型)に変換する方法
- Date型をString型に変換する方法
という基本的な内容から、
- String型からSQLのDate型に変換する方法
などの応用的な使い方に関しても解説していきます。今回はString型と日付型(Date型)の変換方法について、使い方をわかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
Dateクラスとは
Dateクラスは日時を取得したり、日時を計算するときに使用する日付型のクラスです。Dateクラスを使用するには「java.util.Date」をインポートする必要があります。Dateクラスを使うことで、日付に関する様々な処理を行うことができます。
文字列を日付型(Date型)に変換する方法
初めに文字列を日付型(Date型)に変換する方法を解説します。文字列を日付型(Date型)に変換するにはSimpleDateFormatを使って、文字列のフォーマットを指定する必要があります。
例えば、文字列が“2017/03/02”ならフォーマットは“yyyy/MM/dd”となります。時間を含む文字列の場合も同じように、“2017-03-02 01:23:45”ならフォーマットは“yyyy-MM-dd hh:mm:ss”となります。
このとき、月のフォーマットは大文字の”M”で、分は小文字の”m”であることに注意してください。また、フォーマットが間違っているとParseExceptionの例外が発生するので気をつけてください。
フォーマットの指定ができたらparseメソッドを使ってDate型に変換します。文字列を日付型(Date型)に変換する方法を覚えるために次のプログラムを見てみましょう。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { try { String strDate = "2017/03/02 01:23:45"; System.out.println("文字列 = " + strDate); SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); Date date = sdFormat.parse(strDate); System.out.println("Date型 = " + date); } catch (ParseException e) { e.printStackTrace(); } } }
実行結果:
文字列 = 2017/03/02 01:23:45 Date型 = Thu Mar 02 01:23:45 UTC 2017
ここではSimpleDateFormatを使ってフォーマットを指定した後に、parseメソッドでDate型に変換した内容を表示しています。また、parseメソッドは例外処理が必要なため、try-catch文を使用しています。
SimpleDateFormatで日付のフォーマットを指定する方法についてはこちらの記事で詳しく解説しているので、ぜひ確認してください。
Date型をString型に変換する方法
次にDate型をString型に変換する方法を解説します。Date型をString型に変換する場合はSimpleDateFormatで変換したいフォーマットを指定して、formatメソッドで変換します。次のプログラムで確認してみましょう。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { try { String strDate = "2017/03/02 01:23:45"; SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); Date date = sdFormat.parse(strDate); System.out.println("Date型 = " + date); String str = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date); System.out.println("String型 = " + str); } catch (ParseException e) { e.printStackTrace(); } } }
実行結果:
Date型 = Thu Mar 02 01:23:45 UTC 2017 String型 = 2017-03-02 01:23:45
ここでは日付の区切りを”-”にしてString型に変換しています。
String型からSQLのDate型に変換する方法
最後にString型からSQLのDate型に変換する方法を解説します。日付の文字列をSQLのDate型の”yyyy-mm-dd”の形式に合わせて用意して、valueOfメソッドを使用するとString型からSQLのDate型に変換する事ができます。
ここではSQLのデータ型を使用するため、java.sql.Dateクラスをimportしてください。次のプログラムで確認してみましょう。
import java.sql.Date; public class Main { public static void main(String[] args) { Date sqlDate= Date.valueOf("2017-03-02"); System.out.println("SQLのDate型 = " + sqlDate); } }
実行結果:
SQLのDate型 = 2017-03-02
これでString型からSQLのDate型に変換することができました!
Dateクラスの使い方総まとめ
Dateクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
Calendarクラスの使い方総まとめ
Calendarクラスは、現在の年月日を取得したり、指定した日時の設定や加算・減算、日時を比較するなど、日時を扱うさまざまな処理が可能なクラスです。Calendarクラスの使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。
DateTimeクラスの使い方
DateTimeクラスは、日付を扱うときによく使用するCalendarクラスを、より扱いやすくしたライブラリです。DateTimeクラスの使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。
データ型の範囲などを一覧で確認したい方へ
ここではDate型についてみてきましたが、よく使われるデータ型の範囲などを一覧で確認したい場合は、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
ここではString型と日付型(Date型)とSQLの日付型の変換方法について解説しました。変換のフォーマットの指定を間違えると例外が発生するので注意してくださいね。もし日付型(Date型)の変換方法を忘れてしまったらこの記事を確認してください!