JavaのDate型徹底ガイド!特徴から使い方まで紹介

「JavaのDate型ってなに?」
「どうやって使うの?」

JavaのDate型は日時を取得する際に使用します。

しかし、そのまま使用しても見えづらく、使いづらい仕様です。

そこで本記事では、JavaのDate型の具体的なフォーマット設定、さらに良く使う文字列やCalendar型への変換までご紹介します。

実際のサンプルコードを交えた解説なので、JavaのDate型への理解も深まる内容です。

ぜひ最後までご覧ください。

JavaのDate型とは

Date型は日時を扱うデータ型です。

現在の日時をミリ秒まで取得できます。

実際には、日付の管理をするDateクラスのインスタンスを作成して日付を取得可能です。

//現在日時の取得
Date now = new Date();
System.out.println(now);

出力結果は「Thu Mar 07 22:48:19 UTC 2024」です。

new 演算子でインスタンスを作成すると、変数nowには現在の日時が入ってきます。

Java Date型の基本的な使い方

実際によくあるDate型の使い方を見ていきましょう。

Date型と文字列の相互変換方法

Date型を文字列(String)へ変換する場合にはvalueOfメソッドを使います。

Date型を、扱いやすい文字列に変更したいケースが多々ありますので、やり方を覚えておきましょう。

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date now = new Date();
        String strnow = String.valueOf(now);
        System.out.println("str : " + strnow);
    }
}

出力結果は「str : Thu Mar 07 22:59:25 UTC 2024」です。

一方、文字列をDate型に変換する方法もございますので見ていきましょう。

変換には、SimpleDateFormatクラスのparseメソッドを使用します。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main { 
    public static void main(String[] args) {
        String str = "20200307 13:10:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        try {
            Date day = sdf.parse(str);
            System.out.println("day : " + day.toString());
        } catch(ParseException e) {
            e.printStackTrace();
        }
    }
}

出力結果は「day : Sat Mar 07 13:10:00 UTC 2020」です。

parseメソッドを使用して引数に文字列を指定します。

parseメソッドを使う場合、下記の対応をしないとエラーが出てしまうので注意しましょう。

  • throws句を使ってParseExceptionなどに例外を投げる
  • try-catch構文で例外処理

仮に下記のようなソースコードを実行した結果を見てみましょう。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main { 
    public static void main(String[] args) {
        String str = "20200307 13:10:00";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        Date day = sdf.parse(str);
        System.out.println("day : " + day.toString());
    }
}

「error: unreported exception ParseException; must be caught or declared to be thrown」のようなエラーが出てしまいます。

Date型とCalendar型の変換方法

Date型は、現在時刻を保持していきます。

特定の日付を指定することはできません。

日付に関する細かい処理をしたい場合には、Calendarクラスを使用します。

Date型とCalendar型の組み合わせは、良く使われるので覚えておきましょう。

Date型からCalendar型の変換は下記のとおりです。

import java.util.Date;
import java.util.Calendar;

public class Main {
    public static void main(String[] args) throws Exception {

        Date date = new Date();
        Calendar cl = Calendar.getInstance();
        
        date = cl.getTime();
        System.out.println(date);
    }
}

出力結果は「Thu Mar 07 23:26:18 UTC 2024」です。

Calendarクラスを生成するときは「Calendar オブジェクト名 = Calendar.getInstance();」と書きます。

Calendar型の変数のgetTime()メソッドで現在時刻を取得し、Date型の変数に設定すると変換可能です。

Java Date型のフォーマット設定方法

Java Date型は、そのまま使うと非常に見辛いフォーマットになってしまいます。

そこで、Java Date型でよく使うフォーマットの設定方法について見ていきましょう。

日本語フォーマットの設定方法

まずは何もフォーマットを設定しない状態でDateを出力させてみましょう。

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
    }
}

上記だと「Sat Mar 09 04:47:18 UTC 2024」が出力されます。

日本時間ではありませんし、そもそもこちらの表記だと分かり辛いです。

そこで、取得した日付のフォーマットを指定して、日付を分かりやすく表示させましょう。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy'年'MM'月'dd'日'E k'時'mm'分'ss'秒'");
        System.out.println(sdf.format(date));
    }
}

出力結果は「2024年03月09日Sat 4時48分46秒」です。

yは年、Mは月、dは日、Eは曜日、kは時、mは分、sは秒と決まっています。

こちらのフォーマットを覚えておくと、自分なりに分かりやすいフォーマットを簡単に作ることが可能です。

よく使われるフォーマット形式の設定方法

他にも、Java Date型で良く使うフォーマットの設定を紹介します。

import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        //Calendarクラスのオブジェクトを生成する
        Calendar cl = Calendar.getInstance();
        Date date = new Date();
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        System.out.println("①:"+sdf.format(cl.getTime()));
        SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd E HH:mm:ss");
        System.out.println("②:"+df.format(date));
        df = new SimpleDateFormat("yyyy年MM月dd日 E曜日");
        System.out.println("③:"+df.format(date));
        Locale locale = new Locale("ja");
        Date now = new Date();
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy/MM/dd(EEEE) HH:mm", locale);
        System.out.println("④:"+dateFormat1.format(now));
        SimpleDateFormat dateFormat12 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
        System.out.println("⑤:"+dateFormat12.format(now));
    }
}

出力結果は下記のとおりです。

①:2024/03/11
②:2024/03/11 Mon 00:17:26
③:2024年03月11日 Mon曜日
④:2024/03/11(月曜日) 00:17
⑤:2024年03月11日 00時17分26秒

「yyyy/MM/dd」形式や、「yyyy年MM月dd日」形式などよく目にするフォーマットに変更が可能です。

良く使うパターン文字をまとめます。

フォーマット変更時には、下記のパターン文字を使用するので覚えておきましょう。

文字 説明 具体例(2024年3月09日14:09土曜日の場合)
y yy:24
yyyy:2024
M M:3
MM:03
d d:10
dd:09
E 曜日 E:土
EEEE:土曜日
k 時(1 – 24) k:14
m m:9
mm:09
s 9秒の場合
s:9
ss:09
S ミリ秒 小文字のsだと、秒の表示になるので注意

JavaとSQL Date型の相互変換方法

JavaのSQL Date型は、データベースに時間を登録する際に使う型です。

日付の文字列(java.util.Date)をSQLのDate型(java.sql.Date)に変換するには下記の方法があります。

  • SimpleDateFormatとvalueOf() を使用
  • getTime()を使用

今回は、SimpleDateFormatとvalueOf() を使用した方法を紹介します。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
  public static void main(String[] args) throws IllegalArgumentException {
      
    Date dt = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String formattedDate = simpleDateFormat.format(dt);
    java.sql.Date dt2 = java.sql.Date.valueOf(formattedDate);
    System.out.println(dt2);
  }
}

出力結果は「2024-03-10」です。

日付の文字列をSQLのDate型の「yyyy-mm-dd」のフォーマットに合わせて用意します。

フォーマット設定したデータを、valueOfメソッドに渡すとString型からSQLのDate型への変更が可能です。

Javaプログラミングのスキルを活かして収入を増やすなら

なかには、副業での収入獲得やフリーランスへの独立を目的にJavaプログラミングのスキル習得に励んでいる人もいますよね。

ただ、身につけたスキルをどう収入UPに繋げればいいのか、イメージが湧かない人もいるはず。

そんな方は、ぜひフリーランスのミカタをご活用ください。

出典:フリーランスのミカタ

フリーランスのミカタは、平均単価80万円以上の案件を取り揃える、ITエンジニアに特化したフリーランスエージェントです。具体的には、次のような週3回からフルリモートで請け負える案件を豊富に掲載しています。

また希望年収や稼働時間だけでなく、扱うプログラミング言語などを細かく指定して案件を探せるため、自分にあう仕事を見つけやすいサイト仕様になっています。

ただし、上記のような案件は条件として2〜3年の実務経験が求められるケースが多いです。そのため、応募する際はどれくらいの経験が必要なのかを前もってチェックしておきましょう。

フリーランスのミカタを活用すれば、中・長期的な安定収入が得られる案件が見つかりますよ。

どんな案件が掲載されているか気になる人は、下のボタンから自分にあう案件を探してみてください。

まとめ

JavaのDate型について解説しました。

JavaのDate型は良く使われますが、単体だけではあまり使われません。

Clandar型やSimpleDateFormatなどと組み合わせ、加工して使われるケースが多いです。

また人の目に分かりやすいフォーマットに変換することもよくあります。

本記事で紹介した方法で、JavaのDate型を使いこなし、ぜひJavaの理解を深めてみて下さい。