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クラスの使い方を忘れてしまったら、この記事を思い出してくださいね!