便利なコードパーツ集!

やまろうのプログラミングTips

Java

Javaで日付の差を求める方法

投稿日:

2007/02

意外とどうやればいいかわかりにくいのが、日付の計算です。
一番シンプルなのがCalendarをm秒に直して引き算して1日のm秒で割る
方法です。

package sample;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateCalc {
	/** 1日(24時間)をm秒で表したもの */
	public static final long ONE_DATE_TIME_MILLIS = 1000 * 60 * 60 * 24;

	/**
	 * 現在日付とargs[0]の差が何日間かを求める
	 * @param args yyyy/MM/dd
	 */
	public static void main(String[] args) {
		Calendar calendar1 = new GregorianCalendar();

		DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
		Date date = null;
		try {
			date = dateFormat.parse(args[0]);
		} catch (ParseException e) {
			e.printStackTrace();
			return;
		}
		Calendar calendar2 = new GregorianCalendar();
		calendar2.setTime(date);

		long time1 = calendar1.getTimeInMillis();
		long time2 = calendar2.getTimeInMillis();
		long result = (time1 - time2) / ONE_DATE_TIME_MILLIS;
		String dateString1 = dateFormat.format(calendar1.getTime());
		String dateString2 = dateFormat.format(calendar2.getTime());

		System.out.println(
			dateString1 + "は" + dateString2 + "から" + result + "日後");
	}
}

[実行結果]

>javac -d . DateCalc.java
>java sample.DateCalc 2007/01/01
2007/02/01は2007/01/01から31日後

自分の誕生日を入れてみれば、自分が何日間生きてるかが
分かります。僕は2007/2/1に実行したら10073日でした。人生長っ!!?

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2024 AllRights Reserved Powered by AFFINGER4.