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日後
>java sample.DateCalc 2007/01/01
2007/02/01は2007/01/01から31日後
自分の誕生日を入れてみれば、自分が何日間生きてるかが
分かります。僕は2007/2/1に実行したら10073日でした。人生長っ!!?