【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だけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

侍ブログ編集部

侍ブログ編集部

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

おすすめコンテンツ

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

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