diff options
author | Gary Benson <gbenson@redhat.com> | 2007-04-13 08:12:36 +0000 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2007-04-13 08:12:36 +0000 |
commit | dc44e9be380833622a77e87fae946917528bf036 (patch) | |
tree | d6835afaf9fac3d8dcaf6c792d0f2153f23d3423 | |
parent | 2ab6e41c2c1bff5bd58d0996ff31fa7258b3aaa0 (diff) | |
download | classpath-dc44e9be380833622a77e87fae946917528bf036.tar.gz |
2007-04-13 Gary Benson <gbenson@redhat.com>
* java/util/Calendar.java
(clear()): Zero cleared fields rather than using a default.
(clear(int)): Likewise.
* java/util/GregorianCalendar.java
(setDefaultFields): New method.
(computeTime): Call setDefaultFields if fields are not set.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | java/util/Calendar.java | 19 | ||||
-rw-r--r-- | java/util/GregorianCalendar.java | 16 |
3 files changed, 30 insertions, 14 deletions
@@ -1,6 +1,15 @@ 2007-04-13 Gary Benson <gbenson@redhat.com> * java/util/Calendar.java + (clear()): Zero cleared fields rather than using a default. + (clear(int)): Likewise. + * java/util/GregorianCalendar.java + (setDefaultFields): New method. + (computeTime): Call setDefaultFields if fields are not set. + +2007-04-13 Gary Benson <gbenson@redhat.com> + + * java/util/Calendar.java (explicitDSTOffset): Remove. (set(int, int)): Remove explicitDSTOffset stuff. (set(int, int, int)): Likewise. diff --git a/java/util/Calendar.java b/java/util/Calendar.java index d3012153e..5a2b91519 100644 --- a/java/util/Calendar.java +++ b/java/util/Calendar.java @@ -911,15 +911,11 @@ public abstract class Calendar { isTimeSet = false; areFieldsSet = false; - int zoneOffs = zone.getRawOffset(); - int[] tempFields = - { - 1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0, - 0, 0, zoneOffs, 0 - }; - fields = tempFields; for (int i = 0; i < FIELD_COUNT; i++) - isSet[i] = false; + { + fields[i] = 0; + isSet[i] = false; + } } /** @@ -931,16 +927,11 @@ public abstract class Calendar */ public final void clear(int field) { - int[] tempFields = - { - 1, 1970, JANUARY, 1, 1, 1, 1, THURSDAY, 1, AM, 0, 0, 0, - 0, 0, zone.getRawOffset(), 0 - }; complete(); isTimeSet = false; areFieldsSet = false; isSet[field] = false; - fields[field] = tempFields[field]; + fields[field] = 0; } /** diff --git a/java/util/GregorianCalendar.java b/java/util/GregorianCalendar.java index 28c72b3c2..47be31154 100644 --- a/java/util/GregorianCalendar.java +++ b/java/util/GregorianCalendar.java @@ -496,6 +496,19 @@ public class GregorianCalendar extends Calendar } /** + * Set all fields to their default values. + */ + private void setDefaultFields() + { + int[] defaults = { + AD, 1970, JANUARY, 0, 0, 1, 0, -1, 1, AM, 0, 0, 0, 0, 0, 0, 0 + }; + System.arraycopy(defaults, 0, fields, 0, FIELD_COUNT); + fields[DAY_OF_WEEK] = getFirstDayOfWeek(); + areFieldsSet = true; + } + + /** * Converts the time field values (<code>fields</code>) to * milliseconds since the epoch UTC (<code>time</code>). * @@ -504,6 +517,9 @@ public class GregorianCalendar extends Calendar */ protected synchronized void computeTime() { + if (!areFieldsSet) + setDefaultFields(); + int millisInDay = 0; int era = fields[ERA]; int year = fields[YEAR]; |