diff options
Diffstat (limited to 'libjava/java/util')
-rw-r--r-- | libjava/java/util/Calendar.java | 5 | ||||
-rw-r--r-- | libjava/java/util/GregorianCalendar.java | 14 |
2 files changed, 11 insertions, 8 deletions
diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java index 17f4c77..8149411 100644 --- a/libjava/java/util/Calendar.java +++ b/libjava/java/util/Calendar.java @@ -549,8 +549,6 @@ public abstract class Calendar implements Serializable, Cloneable */ public final void set(int field, int value) { - if (!areFieldsSet) - computeFields(); isTimeSet = false; fields[field] = value; isSet[field] = true; @@ -573,7 +571,6 @@ public abstract class Calendar implements Serializable, Cloneable isSet[HOUR] = false; break; case HOUR: - isSet[AM_PM] = false; isSet[HOUR_OF_DAY] = false; break; } @@ -587,8 +584,6 @@ public abstract class Calendar implements Serializable, Cloneable */ public final void set(int year, int month, int date) { - if (!areFieldsSet) - computeFields(); isTimeSet = false; fields[YEAR] = year; fields[MONTH] = month; diff --git a/libjava/java/util/GregorianCalendar.java b/libjava/java/util/GregorianCalendar.java index 1a8d073..2c68907 100644 --- a/libjava/java/util/GregorianCalendar.java +++ b/libjava/java/util/GregorianCalendar.java @@ -373,9 +373,17 @@ public class GregorianCalendar extends Calendar year = 1 - year; int[] daysOfYear = getDayOfYear(year); - int hour = isSet[HOUR_OF_DAY] ? fields[HOUR_OF_DAY] - : (isSet[HOUR] && isSet[AM_PM] - ? fields[AM_PM] * 12 + (fields[HOUR] % 12) : 0); + + int hour = 0; + if (isSet[HOUR_OF_DAY]) + hour = fields[HOUR_OF_DAY]; + else if (isSet[HOUR]) + { + hour = fields[HOUR]; + if (isSet[AM_PM] && fields[AM_PM] == PM) + hour += 12; + } + int minute = isSet[MINUTE] ? fields[MINUTE] : 0; int second = isSet[SECOND] ? fields[SECOND] : 0; int millis = isSet[MILLISECOND] ? fields[MILLISECOND] : 0; |