【Java】DateTimeクラスで日付を扱う方法を解説

Javaで日付を扱うにはどうすればいいの?
DateTimeクラスの使い方を詳しく知りたい

Javaには日付を簡単に扱うことができるDateTimeクラスがあります。

ここではDataTimeクラスについて、使い方の基本から日付フォーマットを指定する方法、Java8で追加されたDateTimeクラスの使い方などについて詳しく解説していきます。

JavaのDateTimeとは

DateTimeクラスは、日付を扱うときによく使用するCalendarクラスを、より扱いやすくしたライブラリです。

DateTimeクラスを使用するためには「joda-time-X.X」のパッケージをインストールする必要があります。
(2018時点の最新版は「joda-time-2.2」になります)

DateTimeクラスのパッケージ「joda-time-X.X」は、以下のサイトからダウンロードできます。
http://www.java2s.com/Code/Jar/j/Downloadjodatime22jar.htm

DateTimeクラスは、以下のパッケージの宣言が必要です。

import org.joda.time.DateTime;

DateTimeの使い方

初期化する方法

DateTime型を初期化するには、オブジェクト生成時にインスタンスにさまざまな引数を指定することが可能です。

以下にDateTimeクラスを初期化する基本的な方法を記述します。

import java.util.Date;
import org.joda.time.DateTime;

public class Main {
    public static void main(String[] args) throws Exception {
    	
    	//現在の日付で初期化する
    	DateTime dt1 = new DateTime();
    	
    	//年月日時分秒を指定して初期化する
    	DateTime dt2 = new DateTime(2017,4,30,13,00,30);
    	
    	//Date型を指定して初期化する
    	DateTime dt3 = new DateTime(new Date());
    	
    	System.out.println("dt1 : " + dt1.toString());
    	System.out.println("dt2 : " + dt2.toString());
    	System.out.println("dt2 : " + dt3.toString());
 
    }
}
実行結果
dt1 : 2017-04-06T20:08:04.095+09:00
dt2 : 2017-04-30T13:00:30.000+09:00
dt2 : 2017-04-06T20:08:04.147+09:00

DateTimeクラスは引数無しで設定すると現在の日時を取得することができますし、年月日時分秒を詳細に設定する方法、Dateクラスを指定する方法などがあります。

基本的な使い方

DateTimeクラスは、以下のようにメソッドを使用することで、年月日が簡単に取得することができます。

DateTime dt = new DateTime();
//年を取得する
dt.getYear();
//月を取得する
dt.getMonthOfYear();
//日を取得する
dt.getDayOfMonth();
//時間を取得する
dt.getHourOfDay();
//分を取得する
dt.getMinuteOfHour();
//秒を取得する
dt.getSecondOfMinute();
//曜日を取得する
dt.getDayOfWeek();

日付のフォーマットを指定する方法

DateTimeクラスは、日付のフォーマットもDateTimeFormatクラスのforPatternメソッドを使用すれば、簡単に設定することができます。

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

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

public class Main {
    public static void main(String[] args) throws Exception {
    	
    	DateTime dt = DateTimeFormat.
    	    forPattern("yyyy/MM/dd").parseDateTime("2017/04/01");
    	
    	System.out.println(dt.toString());
 
    }
}
実行結果
2017-04-01T00:00:00.000+09:00

サンプルではDateTimeクラスのオブジェクトに対して、DateTimeFormatクラスのforPatternメソッドを使用して、日付パターンを設定し、parseDateTimeメソッドで日時を指定しています。

Java8で追加されたDateTimeクラス

Java8で追加された日時APIには、便利な日付機能を兼ね備えたクラスがいくつか追加されました。
ここでは、LocalDateTimeクラスとZonedDateTimeクラスを紹介します。

java.time.LocalDateTime

LocalDateTimeクラスは、タイムゾーンのない日時を設定することができます。

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

import java.time.LocalDateTime;

以下にLocalDateTimeクラスの基本的な使い方を記述します。

import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) throws Exception {
    	
    	LocalDateTime ldt = LocalDateTime.now();
    	System.out.println("ldt : " + ldt.toString());
 
    }
}
実行結果
ldt : 2017-04-06T20:22:20.867

java.time.ZonedDateTime

ZonedDateTimeクラスは、タイムゾーンのある日時を設定することができます。

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

import java.time.ZonedDateTime;

以下にZonedDateTimeクラスの基本的な使い方を記述します。

import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) throws Exception {
    	
    	ZonedDateTime zdt = ZonedDateTime.now();
    	System.out.println("zdt : " + zdt.toString());
 
    }
}
実行結果
zdt : 2017-04-06T20:28:08.052+09:00[Asia/Tokyo]

まとめ

ここでは、DateTimeクラスについて、初期化方法や基本的な使い方、Java8で追加されたjava.timeパッケージのDateTimeクラスについても紹介しました。

Javaでは日付を扱うクラスが複数存在しますので、それぞれ用途や使い方をしっかりと覚えておきましょう。

もし、DateTimeクラスの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら