From 63d28241c5d0643650ea1c7bd0dbcba16cc9574e Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 27 Nov 2003 09:16:13 +0000 Subject: [PATCH] 2003-11-27 Ito Kazumitsu * java/util/GregorianCalendar.java (getLinearTime): Avoid counting the leap day of the leap year twice. (computeFields): First week of month is 1 not 0. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73984 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 6 ++++++ libjava/java/util/GregorianCalendar.java | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3fc4273..33a8692 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2003-11-27 Ito Kazumitsu + + * java/util/GregorianCalendar.java (getLinearTime): Avoid counting + the leap day of the leap year twice. + (computeFields): First week of month is 1 not 0. + 2003-11-27 Mark Wielaard * javax/swing/plaf/basic/BasicDefaults.java (BasicDefaults): Put diff --git a/libjava/java/util/GregorianCalendar.java b/libjava/java/util/GregorianCalendar.java index 91f5890..624924c 100644 --- a/libjava/java/util/GregorianCalendar.java +++ b/libjava/java/util/GregorianCalendar.java @@ -1,5 +1,5 @@ /* java.util.GregorianCalendar - Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -264,8 +264,10 @@ public class GregorianCalendar extends Calendar // // The additional leap year factor accounts for the fact that // a leap day is not seen on Jan 1 of the leap year. + // And on and after the leap day, the leap day has already been + // included in dayOfYear. int gregOffset = (year / 400) - (year / 100) + 2; - if (isLeapYear (year, true) && dayOfYear < 31 + 29) + if (isLeapYear (year, true)) --gregOffset; time += gregOffset * (24 * 60 * 60 * 1000L); } @@ -604,12 +606,12 @@ public class GregorianCalendar extends Calendar calculateDay(++day, gregorian); } - fields[DAY_OF_WEEK_IN_MONTH] = (fields[DAY_OF_MONTH] + 6) / 7; + fields[DAY_OF_WEEK_IN_MONTH] = (fields[DAY_OF_MONTH] + 12) / 7; // which day of the week are we (0..6), relative to getFirstDayOfWeek int relativeWeekday = (7 + fields[DAY_OF_WEEK] - getFirstDayOfWeek()) % 7; - fields[WEEK_OF_MONTH] = (fields[DAY_OF_MONTH] - relativeWeekday + 6) / 7; + fields[WEEK_OF_MONTH] = (fields[DAY_OF_MONTH] - relativeWeekday + 12) / 7; int weekOfYear = (fields[DAY_OF_YEAR] - relativeWeekday + 6) / 7; -- 2.7.4