Javaで日数の差
Javaで日数の差を計算してみる。
あってるかなあ?(確かめろよおい!)
GregorianCalendar gcStart = new GregorianCalendar();
gcStart.set(GregorianCalendar.YEAR, 2005);
gcStart.set(GregorianCalendar.MONTH, 4 - 1);
gcStart.set(GregorianCalendar.DAY_OF_MONTH, 15);
GregorianCalendar gcEnd = new GregorianCalendar();
gcEnd.set(GregorianCalendar.YEAR, 2006);
gcEnd.set(GregorianCalendar.MONTH, 10 - 1);
gcEnd.set(GregorianCalendar.DAY_OF_MONTH, 20);
int daysStart = gcStart.get(GregorianCalendar.DAY_OF_YEAR);
int daysEnd = gcEnd.get(GregorianCalendar.DAY_OF_YEAR);
System.out.println(" daysStart=" + daysStart);
System.out.println(" daysEnd=" + daysEnd);
if (gcStart.get(GregorianCalendar.YEAR) == gcEnd
.get(GregorianCalendar.YEAR)) {
System.out.println("daysEnd - daysStart = "
+ (daysEnd - daysStart));
} else {
// 開始の同じ年の年末日
GregorianCalendar gcIdx = (GregorianCalendar) gcStart.clone();
gcIdx.set(GregorianCalendar.MONTH, 12 - 1);
gcIdx.set(GregorianCalendar.DAY_OF_MONTH, 31);
int daysTmp = gcIdx.get(GregorianCalendar.DAY_OF_YEAR);
System.out.println(" daysTmp=" + daysTmp);
int days = daysTmp - daysStart;
System.out.println("ループ開始前 days=" + days);
// 開始の翌年からスタート
gcIdx.add(GregorianCalendar.YEAR, 1);
while (gcIdx.get(GregorianCalendar.YEAR) < gcEnd
.get(GregorianCalendar.YEAR)) {
int tmp = gcIdx.get(GregorianCalendar.DAY_OF_YEAR);
System.out.println(" 途中=" + tmp);
days += tmp;
gcIdx.add(GregorianCalendar.YEAR, 1);
}
days += daysEnd;
System.out.println("days=" + days);
}