ICU-10615 Updated the fix by adding an intenal API Calendar.haveDefaultCentury() like ICU4C, to exclude Chiense/Japanese/Dangi calendar to skip the default century parsing.

X-SVN-Rev: 34868
This commit is contained in:
Yoshito Umaoka 2014-01-10 21:45:57 +00:00
parent ed3bb51647
commit c25116c2c8
4 changed files with 38 additions and 4 deletions

View file

@ -2819,7 +2819,7 @@ public class SimpleDateFormat extends DateFormat {
/* Skip this for Chinese calendar, moved from ChineseDateFormat */
if ( override != null && (override.compareTo("hebr") == 0 || override.indexOf("y=hebr") >= 0) && value < 1000 ) {
value += HEBREW_CAL_CUR_MILLENIUM_START_YEAR;
} else if (count == 2 && (pos.getIndex() - start) == 2 && !isChineseCalendar && !cal.getType().equals("japanese")
} else if (count == 2 && (pos.getIndex() - start) == 2 && cal.haveDefaultCentury()
&& UCharacter.isDigit(text.charAt(start))
&& UCharacter.isDigit(text.charAt(start+1)))
{

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 1996-2013, International Business Machines
* Copyright (C) 1996-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*/
@ -6080,6 +6080,21 @@ public abstract class Calendar implements Serializable, Cloneable, Comparable<Ca
return "unknown";
}
/**
* Returns if two digit representation of year in this calendar type
* customarily implies a default century (i.e. 03 -> 2003).
* The default implementation returns <code>true</code>. A subclass may
* return <code>false</code> if such practice is not applicable (for example,
* Chinese calendar and Japanese calendar).
*
* @return <code>true<code> if this calendar has a default century.
* @internal
* @deprecated This API is ICU internal only.
*/
public boolean haveDefaultCentury() {
return true;
}
// -------- BEGIN ULocale boilerplate --------
/**

View file

@ -1,5 +1,5 @@
/*********************************************************************
* Copyright (C) 2000-2012, International Business Machines
* Copyright (C) 2000-2014, International Business Machines
* Corporation and others. All Rights Reserved.
*********************************************************************
*/
@ -1017,6 +1017,15 @@ public class ChineseCalendar extends Calendar {
return "chinese";
}
/**
* {@inheritDoc}
* @internal
* @deprecated This API is ICU internal only.
*/
public boolean haveDefaultCentury() {
return false;
}
/**
* Override readObject.
*/

View file

@ -1,6 +1,6 @@
/*
*******************************************************************************
* Copyright (C) 1996-2010,2012, International Business Machines Corporation and *
* Copyright (C) 1996-2014, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
@ -636,6 +636,15 @@ public class JapaneseCalendar extends GregorianCalendar {
return "japanese";
}
/**
* {@inheritDoc}
* @internal
* @deprecated This API is ICU internal only.
*/
public boolean haveDefaultCentury() {
return false;
}
/**
* {@inheritDoc}
* @stable ICU 4.0
@ -661,4 +670,5 @@ public class JapaneseCalendar extends GregorianCalendar {
}
return super.getActualMaximum(field);
}
}