Calendar.java (set): Never recompute fields here.

* java/util/Calendar.java (set): Never recompute fields here. They
	will already be set if someone set time explicitly, and it can cause
	problems to do so. Don't invalidate AM_PM setting if HOUR is set.
	* java/util/GregorianCalendar.java (computeTime): Don't ignore an
	HOUR setting if AM_PM is set. Don't try to ensure the HOUR value is
	sane.
	* java/text/SimpleDateFormat.java (defaultCentury): New field.
	(readObject): Call set2DigitYearStart if appropriate so that
	defaultCentury is calculated.
	(SimpleDateFormat): Don't bother clearing calendar here. Call
	computeCenturyStart().
	(set2DigitYearStart): Calculate and set defaultCentury.
	(format): Don't clone the calendar. Use "calendar" not "theCalendar"
	everywhere.
	(parse): Likewise. If the pattern is "y" or "yy" and it found exactly
	2 numeric digits, use the 80-20 heuristic to parse the value into a
	default century based on defaultCenturyStart.
	(computeCenturyStart): Rewritten. Call set2DigitYearStart().

From-SVN: r44395
This commit is contained in:
Bryce McKinlay 2001-07-26 11:21:45 +00:00 committed by Bryce McKinlay
parent 2cf50fd3a4
commit fa397ddafb
4 changed files with 112 additions and 71 deletions

View file

@ -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;