【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

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

侍ブログ編集部

侍ブログ編集部

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説