diff options
author | Gary Benson <gbenson@redhat.com> | 2007-04-13 13:05:39 +0000 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2007-04-13 13:05:39 +0000 |
commit | cfa2da67d8f8895f68d19423d5d379cf72038a93 (patch) | |
tree | 08df523e5bfaac3ae123c5577b23adab1ee81b69 | |
parent | 277ab50eee16c2b33bee4c1f203ed9ba13da5a73 (diff) | |
download | classpath-cfa2da67d8f8895f68d19423d5d379cf72038a93.tar.gz |
2007-04-13 Gary Benson <gbenson@redhat.com>
* java/util/GregorianCalendar.java
(defaults): Moved from within setDefaultFields.
(setDefaultFields): Only set fields that are undefined.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | java/util/GregorianCalendar.java | 26 |
2 files changed, 25 insertions, 7 deletions
@@ -1,5 +1,11 @@ 2007-04-13 Gary Benson <gbenson@redhat.com> + * java/util/GregorianCalendar.java + (defaults): Moved from within setDefaultFields. + (setDefaultFields): Only set fields that are undefined. + +2007-04-13 Gary Benson <gbenson@redhat.com> + * java/util/Calendar.java (clear): Do not call complete. diff --git a/java/util/GregorianCalendar.java b/java/util/GregorianCalendar.java index 8cfadc3d4..bd5e6897b 100644 --- a/java/util/GregorianCalendar.java +++ b/java/util/GregorianCalendar.java @@ -495,18 +495,30 @@ public class GregorianCalendar extends Calendar throw new IllegalArgumentException("Illegal DST_OFFSET."); } + // Default values for all fields, except DAY_OF_WEEK which + // defaults to getFirstDayOfWeek(). Note that according to + // the spec DAY_OF_WEEK_IN_MONTH defaults to 1, but Sun set + // it to 0 so we do too. + private int[] defaults = { + AD, 1970, JANUARY, 0, 0, 1, 0, -1, 0, AM, 0, 0, 0, 0, 0, 0, 0 + }; + /** * Set all fields to their default values. */ private void setDefaultFields() { - // According to the spec DAY_OF_WEEK_IN_MONTH defaults to 1, - // but Sun set it to 0 so we do too. - int[] defaults = { - AD, 1970, JANUARY, 0, 0, 1, 0, -1, 0, AM, 0, 0, 0, 0, 0, 0, 0 - }; - System.arraycopy(defaults, 0, fields, 0, FIELD_COUNT); - fields[DAY_OF_WEEK] = getFirstDayOfWeek(); + for (int i = 0; i < FIELD_COUNT; i++) + { + if (isSet[i]) + continue; + + if (i == DAY_OF_WEEK) + fields[i] = getFirstDayOfWeek(); + else + fields[i] = defaults[i]; + } + // It seems odd that a call to computeTime() should cause // areFieldsSet to become true, but that's what Sun do... areFieldsSet = true; |