Javaで2つの日付の差分日数を取得する方法

java

Javaで日数の差分を算出する方法を紹介します。
2つの日付間で何日開きがあるか、日数を算出する方法です。
今回はライブラリを使わないで算出する方法を紹介します。

[スポンサーリンク]

この章でやること

2つの日付間で、差分日数を取得します。

差分日数を取得するプログラム

    /**
     * 2つの日付の差分日数を算出するプログラムです。
     * @param args
     */
    public static void main( String[] args ) {
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    	Date dateTo = null;
    	Date dateFrom = null;

    	// 日付を作成します。
    	try {
    		dateFrom = sdf.parse("2013/08/01");
    		dateTo = sdf.parse("2013/08/31");
		} catch (ParseException e) {
			e.printStackTrace();
		}

    	// 日付をlong値に変換します。
    	long dateTimeTo = dateTo.getTime();
    	long dateTimeFrom = dateFrom.getTime();

    	// 差分の日数を算出します。
    	long dayDiff = ( dateTimeTo - dateTimeFrom  ) / (1000 * 60 * 60 * 24 );

    	System.out.println( "日数(FROM) : " + sdf.format(dateFrom) );
    	System.out.println( "日数(TO) : " + sdf.format(dateTo) );
        System.out.println( "差分日数 : " + dayDiff );
    }

実行結果

>実行結果
日数(FROM) : 2013/08/01
日数(TO) : 2013/08/31
差分日数 : 30

解説

開始日付(TO)と終了日付(FROM)の差分日数を算出しているプログラムです。

注意したい点は、終了日時-開始日時で演算する必要があります。
もし逆にすると演算結果がマイナスになってしまいます。

dateクラスのgetTime()で、ミリ秒が取得できるので、
日数を取得するためには、ミリ秒取得後、(1000 * 60 * 60 * 24 )で割る必要があります。

最後に

日数の算出方法ですが、わたしはよく使います。
例えば、何かの開始日と終了日の日数を算出する。という仕様は結構メジャーな処理のように思います。
日数の演算方法を覚えておくと、すぐ必要な時なにかと便利です。
それでは!