疲れたらやすむ

Javaを学ぶ上でハマったところを書いていきます。iPhoneアプリ開発や日常ネタもあるかも。

【Java】Date型の日付操作

Date型と言えば、Javaで日付を扱う際に欠かせいため使う頻度は多いです。
地味に面倒くさいのが、現在日時から1時間進んだ日時が欲しい時とか。
自分で1時間進めようと思うとCalendarクラスを使う必要があります。
こんな感じですね。

Main.java

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

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

		Calendar calendar = Calendar.getInstance();
		System.out.println(calendar.getTime() + " (現在日時)");

		calendar.add(Calendar.HOUR_OF_DAY, 1);
		System.out.println(calendar.getTime() + " (現在日時+1時間)");

		Date date = calendar.getTime();
	}
}

実行結果

Fri Nov 23 21:05:52 JST 2018 (現在日時)
Fri Nov 23 22:05:52 JST 2018 (現在日時+1時間)

Calendarで現在日時の取得、現在日時から1時間足した日時を作成します。
一応証跡のためコンソール出力しています。
Calendarの日時はgetTime()メソッドでDate型として取得できます。


うーん、1時間後の時刻が欲しいだけなのにちょっと手間ですよね。
そこでDateUtilsの出番です。
jarはコチラからダウンロードしてください。
Binariesのzipを解凍し、commons-lang3-3.8.1.jarをビルドパス通すと使えます。

Main.java

import java.util.Date;

import org.apache.commons.lang3.time.DateUtils;

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

		Date nowDate = new Date();
		System.out.println(nowDate + " (現在日時)");

		Date date = DateUtils.addHours(nowDate, 1);
		System.out.println(date + " (現在日時+1時間");
	}
}

実行結果

Fri Nov 23 21:07:50 JST 2018 (現在日時)
Fri Nov 23 22:07:50 JST 2018 (現在日時+1時間)

スッキリです。
一発で1時間後の日時を取得したい場合は

Date date = DateUtils.addHours(new Date(), 1);

でOKです。簡単ですね。
他にも分や秒、日も同じようにaddメソッドで操作できます。

今回は以上になります。