Java 日付・時刻の計算 加算・減算が簡単に

Chat&Messenger - テレビ会議も高機能 -
チャット、メッセンジャー、テレビ会議、スケジュール、文書共有を統合したフリーソフト

Java 日付・時刻の計算 加算・減算が簡単に

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);

メソッドの概要


メソッドの概要
static java.util.Calendar add(Calendar cal, int addYera, int addMonth, int addDate, int addHour, int addMinute, int addSecond, int addMillisecond)
現在、または任意の日付・時刻から指定の時間量を加算・減算した結果を返します。
static java.util.Calendar addYera(int addYera)
現在の日付・時刻から指定の【年数】を加算・減算した結果を返します。
static java.util.Calendar addMonth(int addMonth)
現在の日付・時刻から指定の【月数】を加算・減算した結果を返します。
static java.util.Calendar addDate(int addDate)
現在の日付・時刻から指定の【日数】を加算・減算した結果を返します。
static java.util.Calendar addHour(int addHour)
現在の日付・時刻から指定の【時間】を加算・減算した結果を返します。
static java.util.Calendar addMinute(int addMinute)
現在の日付・時刻から指定の【分】を加算・減算した結果を返します。
static java.util.Calendar addSecond(int addSecond)
現在の日付・時刻から指定の【秒】を加算・減算した結果を返します。

サンプルプログラム


実行

 サンプルプログラムでは、リターン値として計算後の日付を保持する 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 の「カレンダー・スケジュール管理機能」で実際に利用しています。


ページトップへ

会社情報 Copyright ©Chat&Messenger Inc. All rights reserved.