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