【Java入門】String型と日付型(Date型)を変換(SQLのDate型も解説)

こんにちは!エンジニアの中沢です。

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で日付のフォーマットを指定する方法についてはこちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java入門】SimpleDateFormatで日付フォーマットの設定
更新日:2024年5月6日

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クラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

【Java】Dateクラスで日付を扱う方法を5つのパターン別に解説
更新日:2024年5月6日

Calendarクラスの使い方総まとめ

Calendarクラスは、現在の年月日を取得したり、指定した日時の設定や加算・減算、日時を比較するなど、日時を扱うさまざまな処理が可能なクラスです。Calendarクラスの使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java入門】Calendarクラスの使い方総まとめ
更新日:2024年5月6日

DateTimeクラスの使い方

DateTimeクラスは、日付を扱うときによく使用するCalendarクラスを、より扱いやすくしたライブラリです。DateTimeクラスの使い方はこちらの記事で詳しく解説しているので、ぜひ確認してください。

【Java】DateTimeクラスで日付を扱う方法を解説
更新日:2024年5月6日

データ型の範囲などを一覧で確認したい方へ

ここではDate型についてみてきましたが、よく使われるデータ型の範囲などを一覧で確認したい場合は、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

【一目でわかるJava】変数の宣言と使い方
更新日:2024年5月6日

まとめ

ここではString型と日付型(Date型)とSQLの日付型の変換方法について解説しました。変換のフォーマットの指定を間違えると例外が発生するので注意してくださいね。もし日付型(Date型)の変換方法を忘れてしまったらこの記事を確認してください!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次