現在日時から何時間後、何日後とか、期限まであと何日とか・・
時間を足し算、引き算したい場合があります。
Javaでは、CalendarクラスやDateクラスを使うことで、日時の取得や計算を簡単に行うことができます。
Calendarクラスを利用して、日時に時間を足し算するサンプル
Calendarクラスで、現在の年月日、時刻の各要素を取得します。
また、取得した現在日時をもとに、時間の足し算を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import java.util.Calendar; public class CalendarTest { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); //現在日時を取得 System.out.println("-- 現在日時を取得 --"); show(cal); //現在から8時間後の日時を取得する cal.add(Calendar.HOUR, 8); System.out.println("-- 8時間後を取得 --"); show(cal); } private static void show(Calendar cal) { System.out.println("年:" + cal.get(Calendar.YEAR)); System.out.println("月:" + (cal.get(Calendar.MONTH) + 1)); System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH)); System.out.println("時(12h):" + cal.get(Calendar.HOUR)); System.out.println("時(24h):" + cal.get(Calendar.HOUR_OF_DAY)); System.out.println("分:" + cal.get(Calendar.MINUTE)); System.out.println("秒:" + cal.get(Calendar.MONTH)); System.out.println("ミリ秒:" + cal.get(Calendar.MILLISECOND)); } } |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -- 現在日時を取得 -- 年:2018 月:1 日:9 時(12h):6 時(24h):18 分:34 秒:0 ミリ秒:641 d:Tue Jan 09 18:34:18 GMT+09:00 2018 -- 8時間後を取得 -- 年:2018 月:1 日:10 時(12h):2 時(24h):2 分:34 秒:0 ミリ秒:641 |
サンプルの解説
Calendar#get(int)により、各要素を取得することができます。
取得できる要素は、サンプル以外にもいろいろありますが、間違えそうなものが結構あります(;´Д`)
とくに、月は”0″始まりであること、時刻(時)は、12時間表記と24時間表記の2種類があるので要注意です。
Calendar#add(int,int)では、今保持しているCalendarインスタンスに対して、要素を指定して加減算ができます。
加算は、そのまま正の数。減算は、負の数を指定します。
ちなみに、ふつうに使っている限り、あまり気にする必要はないですが、カレンダークラスは抽象クラスです。
実際はCalnedarクラス継承下のGregorianCalendarクラスを利用しているため、Calender#getInstance()で取得されるのは、GregorianCalendarになります。