目次
Java 日付・時刻の計算 加算・減算が簡単に
Java で簡単に日付・時刻の加算・減算を計算するサンプルプログラムを紹介します。
サンプルプログラムの特徴は以下となります。
- 現在、または任意の日付・時刻から指定の時間量を加算・減算した結果を返します。
- プラスの数値を指定した場合時間を進め、マイナスの場合は戻します。
たとえば、現在の日付時刻から 10 日前を計算する場合は以下となります。
Calendar cal = addMonth(-10); - 年、月、日、時間、分、秒、ミリ秒の各時間フィールドに対し、任意の時間量を設定できます。
また、指定の時間から相対的に計算する場合は、引数にCalendarクラスを渡す。
たとえば、以下では指定のCalendarインスタンスから1年進めることになります。
Calendar cal = add(“指定のCalendar”,1,0,0,0,0,0,0); - 各時間フィールドの値がその範囲を超えた場合、次の大きい時間フィールドが増分または減分されます。
たとえば、以下では現在時刻から1時間と5分進めることになります。
Calendar cal = addMinute(65);
サンプルプログラム
実行
サンプルプログラムでは、リターン値として計算後の日付を保持する java.util.Calendar オブジェクトを取得できますので、java.util.Calendar#getTime()メソッドにより、java.util.Dateに変換し java.text.SimpleDateFormat により日付文字列に変換しています。
◆実行例
public static void main(String[] args) { SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); System.out.println("現在 の日付・時刻 = "+ f.format(add(null,0,0,0,0,0,0,0).getTime())); System.out.println("1年後 の日付・時刻 = "+ f.format(addYera(1).getTime())); System.out.println("1ヶ月前 の日付・時刻 = "+ f.format(addMonth(-1).getTime())); System.out.println("3時間後 の日付・時刻 = "+ f.format(addHour(3).getTime())); System.out.println("30時間前の日付・時刻 = "+ f.format(addHour(-30).getTime())); System.out.println("40分後 の日付・時刻 = "+ f.format(addMinute(40).getTime())); System.out.println("80秒後 の日付・時刻 = "+ f.format(addSecond(80).getTime())); System.out.println("1ヶ月前から、4日後の日付・時刻 = "+ f.format(add(null,0,-1,4,0,0,0,0).getTime())); }
◆実行結果
現在の日付時刻は 2008/03/25 00:00:00 とします。
現在 の日付・時刻 = 2008/03/25 00:00:00 1年後 の日付・時刻 = 2009/03/25 00:00:00 1ヶ月前 の日付・時刻 = 2008/02/25 00:00:00 3時間後 の日付・時刻 = 2008/03/25 03:00:00 30時間前の日付・時刻 = 2008/03/23 18:00:00 40分後 の日付・時刻 = 2008/03/25 00:40:00 80秒後 の日付・時刻 = 2008/03/25 00:01:20 1ヶ月前から、4日後の日付・時刻 = 2008/02/29 00:00:00
※2008年は閏年のため2月の月末日付は29日となります。
このサンプルプログラムは Chat&Messenger の「カレンダー・スケジュール管理機能」で実際に利用しています。