| java.lang.Object com.ibm.icu.util.Calendar com.ibm.icu.util.ChineseCalendar
ChineseCalendar | public class ChineseCalendar extends Calendar (Code) | | ChineseCalendar is a concrete subclass of
Calendar that implements a traditional Chinese calendar. The traditional Chinese
calendar is a lunisolar calendar: Each month starts on a new moon, and
the months are numbered according to solar events, specifically, to
guarantee that month 11 always contains the winter solstice. In order
to accomplish this, leap months are inserted in certain years. Leap
months are numbered the same as the month they follow. The decision of
which month is a leap month depends on the relative movements of the sun
and moon.
This class defines one addition field beyond those defined by
Calendar : The IS_LEAP_MONTH field takes the
value of 0 for normal months, or 1 for leap months.
All astronomical computations are performed with respect to a time
zone of GMT+8:00 and a longitude of 120 degrees east. Although some
calendars implement a historically more accurate convention of using
Beijing's local longitude (116 degrees 25 minutes east) and time zone
(GMT+7:45:40) for dates before 1929, we do not implement this here.
Years are counted in two different ways in the Chinese calendar. The
first method is by sequential numbering from the 61st year of the reign
of Huang Di, 2637 BCE, which is designated year 1 on the Chinese
calendar. The second method uses 60-year cycles from the same starting
point, which is designated year 1 of cycle 1. In this class, the
EXTENDED_YEAR field contains the sequential year count.
The ERA field contains the cycle number, and the
YEAR field contains the year of the cycle, a value between
1 and 60.
There is some variation in what is considered the starting point of
the calendar, with some sources starting in the first year of the reign
of Huang Di, rather than the 61st. This gives continuous year numbers
60 years greater and cycle numbers one greater than what this class
implements.
Because ChineseCalendar defines an additional field and
redefines the way the ERA field is used, it requires a new
format class, ChineseDateFormat . As always, use the
methods DateFormat.getXxxInstance(Calendar cal,...) to
obtain a formatter for this calendar.
References:
This class should not be subclassed.
ChineseCalendar usually should be instantiated using
com.ibm.icu.util.Calendar.getInstance(ULocale) passing in a ULocale
with the tag "@calendar=chinese" .
See Also: com.ibm.icu.text.ChineseDateFormat See Also: com.ibm.icu.util.Calendar author: Alan Liu |
Field Summary | |
final static int[][][] | CHINESE_DATE_PRECEDENCE Field resolution table that incorporates IS_LEAP_MONTH. | public static int | IS_LEAP_MONTH Field indicating whether or not the current month is a leap month. |
Method Summary | |
public void | add(int field, int amount) Override Calendar to handle leap months properly. | protected int[][][] | getFieldResolutionTable() Override Calendar to add IS_LEAP_MONTH to the field resolution
table. | public String | getType() Return the current Calendar type. | protected void | handleComputeFields(int julianDay) Override Calendar to compute several fields specific to the Chinese
calendar system. | protected int | handleComputeMonthStart(int eyear, int month, boolean useMonth) Return the Julian day number of day before the first day of the
given month in the given extended year.
Note: This method reads the IS_LEAP_MONTH field to determine
whether the given month is a leap month.
Parameters: eyear - the extended year Parameters: month - the zero-based month. | protected int[] | handleCreateFields() Override Calendar to allocate our additional field. | protected DateFormat | handleGetDateFormat(String pattern, ULocale locale) Framework method to create a calendar-specific DateFormat object
using the the given pattern. | protected int | handleGetExtendedYear() Implement abstract Calendar method to return the extended year
defined by the current fields. | protected int | handleGetLimit(int field, int limitType) Override Calendar to return the limit value for the given field. | protected int | handleGetMonthLength(int extendedYear, int month) Override Calendar method to return the number of days in the given
extended year and month. | public void | roll(int field, int amount) Override Calendar to handle leap months properly. |
CHINESE_DATE_PRECEDENCE | final static int[][][] CHINESE_DATE_PRECEDENCE(Code) | | Field resolution table that incorporates IS_LEAP_MONTH.
|
IS_LEAP_MONTH | public static int IS_LEAP_MONTH(Code) | | Field indicating whether or not the current month is a leap month.
Should have a value of 0 for non-leap months, and 1 for leap months.
|
ChineseCalendar | public ChineseCalendar()(Code) | | Construct a Chinese calendar with the default time zone and locale.
|
ChineseCalendar | public ChineseCalendar(TimeZone zone, Locale locale)(Code) | | Construct a Chinese calendar with the given time zone and locale.
Parameters: zone - time zone for this calendar Parameters: locale - locale for this calendar |
ChineseCalendar | public ChineseCalendar(TimeZone zone, ULocale locale)(Code) | | Construct a Chinese calendar with the given time zone and locale.
Parameters: zone - time zone for this calendar Parameters: locale - ulocale for this calendar |
add | public void add(int field, int amount)(Code) | | Override Calendar to handle leap months properly.
|
getFieldResolutionTable | protected int[][][] getFieldResolutionTable()(Code) | | Override Calendar to add IS_LEAP_MONTH to the field resolution
table.
|
getType | public String getType()(Code) | | Return the current Calendar type.
type of calendar (gregorian, etc.) |
handleComputeFields | protected void handleComputeFields(int julianDay)(Code) | | Override Calendar to compute several fields specific to the Chinese
calendar system. These are:
- ERA
- YEAR
- MONTH
- DAY_OF_MONTH
- DAY_OF_YEAR
- EXTENDED_YEAR
The DAY_OF_WEEK and DOW_LOCAL fields are already set when this
method is called. The getGregorianXxx() methods return Gregorian
calendar equivalents for the given Julian day.
Compute the ChineseCalendar-specific field IS_LEAP_MONTH.
|
handleComputeMonthStart | protected int handleComputeMonthStart(int eyear, int month, boolean useMonth)(Code) | | Return the Julian day number of day before the first day of the
given month in the given extended year.
Note: This method reads the IS_LEAP_MONTH field to determine
whether the given month is a leap month.
Parameters: eyear - the extended year Parameters: month - the zero-based month. The month is also determinedby reading the IS_LEAP_MONTH field. the Julian day number of the day before the firstday of the given month and year |
handleCreateFields | protected int[] handleCreateFields()(Code) | | Override Calendar to allocate our additional field.
|
handleGetDateFormat | protected DateFormat handleGetDateFormat(String pattern, ULocale locale)(Code) | | Framework method to create a calendar-specific DateFormat object
using the the given pattern. This method is responsible for
creating the calendar- specific DateFormat and DateFormatSymbols
objects as needed.
|
handleGetExtendedYear | protected int handleGetExtendedYear()(Code) | | Implement abstract Calendar method to return the extended year
defined by the current fields. This will use either the ERA and
YEAR field as the cycle and year-of-cycle, or the EXTENDED_YEAR
field as the continuous year count, depending on which is newer.
|
handleGetLimit | protected int handleGetLimit(int field, int limitType)(Code) | | Override Calendar to return the limit value for the given field.
|
handleGetMonthLength | protected int handleGetMonthLength(int extendedYear, int month)(Code) | | Override Calendar method to return the number of days in the given
extended year and month.
Note: This method also reads the IS_LEAP_MONTH field to determine
whether or not the given month is a leap month.
|
roll | public void roll(int field, int amount)(Code) | | Override Calendar to handle leap months properly.
|
Methods inherited from com.ibm.icu.util.Calendar | public void add(int field, int amount)(Code)(Java Doc) public boolean after(Object when)(Code)(Java Doc) public boolean before(Object when)(Code)(Java Doc) final public void clear()(Code)(Java Doc) final public void clear(int field)(Code)(Java Doc) public Object clone()(Code)(Java Doc) public int compareTo(Calendar that)(Code)(Java Doc) public int compareTo(Object that)(Code)(Java Doc) protected void complete()(Code)(Java Doc) protected void computeFields()(Code)(Java Doc) final protected void computeGregorianFields(int julianDay)(Code)(Java Doc) protected int computeGregorianMonthStart(int year, int month)(Code)(Java Doc) protected int computeJulianDay()(Code)(Java Doc) protected int computeMillisInDay()(Code)(Java Doc) protected void computeTime()(Code)(Java Doc) protected int computeZoneOffset(long millis, int millisInDay)(Code)(Java Doc) public boolean equals(Object obj)(Code)(Java Doc) public int fieldDifference(Date when, int field)(Code)(Java Doc) protected String fieldName(int field)(Code)(Java Doc) final protected static long floorDivide(long numerator, long denominator)(Code)(Java Doc) final protected static int floorDivide(int numerator, int denominator)(Code)(Java Doc) final protected static int floorDivide(int numerator, int denominator, int[] remainder)(Code)(Java Doc) final protected static int floorDivide(long numerator, int denominator, int[] remainder)(Code)(Java Doc) final public int get(int field)(Code)(Java Doc) public int getActualMaximum(int field)(Code)(Java Doc) public int getActualMinimum(int field)(Code)(Java Doc) public static Locale[] getAvailableLocales()(Code)(Java Doc) public static ULocale[] getAvailableULocales()(Code)(Java Doc) static Set getCalendarFactoryNames()(Code)(Java Doc) public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc)(Code)(Java Doc) public DateFormat getDateTimeFormat(int dateStyle, int timeStyle, ULocale loc)(Code)(Java Doc) public int getDayOfWeekType(int dayOfWeek)(Code)(Java Doc) protected int getDefaultDayInMonth(int extendedYear, int month)(Code)(Java Doc) protected int getDefaultMonthInYear(int extendedYear)(Code)(Java Doc) public String getDisplayName(Locale loc)(Code)(Java Doc) public String getDisplayName(ULocale loc)(Code)(Java Doc) final public int getFieldCount()(Code)(Java Doc) protected int[][][] getFieldResolutionTable()(Code)(Java Doc) public int getFirstDayOfWeek()(Code)(Java Doc) final public int getGreatestMinimum(int field)(Code)(Java Doc) final protected int getGregorianDayOfMonth()(Code)(Java Doc) final protected int getGregorianDayOfYear()(Code)(Java Doc) final protected int getGregorianMonth()(Code)(Java Doc) final protected int getGregorianYear()(Code)(Java Doc) public static synchronized Calendar getInstance()(Code)(Java Doc) public static synchronized Calendar getInstance(TimeZone zone)(Code)(Java Doc) public static synchronized Calendar getInstance(Locale aLocale)(Code)(Java Doc) public static synchronized Calendar getInstance(ULocale locale)(Code)(Java Doc) public static synchronized Calendar getInstance(TimeZone zone, Locale aLocale)(Code)(Java Doc) public static synchronized Calendar getInstance(TimeZone zone, ULocale locale)(Code)(Java Doc) static synchronized Calendar getInstance(TimeZone zone, ULocale locale, String factoryName)(Code)(Java Doc) final public int getLeastMaximum(int field)(Code)(Java Doc) protected int getLimit(int field, int limitType)(Code)(Java Doc) final public ULocale getLocale(ULocale.Type type)(Code)(Java Doc) final public int getMaximum(int field)(Code)(Java Doc) public int getMinimalDaysInFirstWeek()(Code)(Java Doc) final public int getMinimum(int field)(Code)(Java Doc) final protected int getStamp(int field)(Code)(Java Doc) final public Date getTime()(Code)(Java Doc) public long getTimeInMillis()(Code)(Java Doc) public TimeZone getTimeZone()(Code)(Java Doc) public String getType()(Code)(Java Doc) public int getWeekendTransition(int dayOfWeek)(Code)(Java Doc) final protected static int gregorianMonthLength(int y, int m)(Code)(Java Doc) final protected static int gregorianPreviousMonthLength(int y, int m)(Code)(Java Doc) protected void handleComputeFields(int julianDay)(Code)(Java Doc) protected int handleComputeJulianDay(int bestField)(Code)(Java Doc) abstract protected int handleComputeMonthStart(int eyear, int month, boolean useMonth)(Code)(Java Doc) protected int[] handleCreateFields()(Code)(Java Doc) protected DateFormat handleGetDateFormat(String pattern, Locale locale)(Code)(Java Doc) protected DateFormat handleGetDateFormat(String pattern, ULocale locale)(Code)(Java Doc) abstract protected int handleGetExtendedYear()(Code)(Java Doc) abstract protected int handleGetLimit(int field, int limitType)(Code)(Java Doc) protected int handleGetMonthLength(int extendedYear, int month)(Code)(Java Doc) protected int handleGetYearLength(int eyear)(Code)(Java Doc) public int hashCode()(Code)(Java Doc) final protected int internalGet(int field)(Code)(Java Doc) final protected int internalGet(int field, int defaultValue)(Code)(Java Doc) final protected long internalGetTimeInMillis()(Code)(Java Doc) final protected void internalSet(int field, int value)(Code)(Java Doc) public boolean isEquivalentTo(Calendar other)(Code)(Java Doc) final protected static boolean isGregorianLeapYear(int year)(Code)(Java Doc) public boolean isLenient()(Code)(Java Doc) final public boolean isSet(int field)(Code)(Java Doc) public boolean isWeekend(Date date)(Code)(Java Doc) public boolean isWeekend()(Code)(Java Doc) final protected static int julianDayToDayOfWeek(int julian)(Code)(Java Doc) final protected static long julianDayToMillis(int julian)(Code)(Java Doc) final protected static int millisToJulianDay(long millis)(Code)(Java Doc) protected int newerField(int defaultField, int alternateField)(Code)(Java Doc) protected int newestStamp(int first, int last, int bestStampSoFar)(Code)(Java Doc) protected void pinField(int field)(Code)(Java Doc) protected void prepareGetActual(int field, boolean isMinimum)(Code)(Java Doc) static Object register(CalendarFactory factory, ULocale locale)(Code)(Java Doc) static Object register(CalendarFactory factory, ULocale locale, boolean visible)(Code)(Java Doc) protected int resolveFields(int[][][] precedenceTable)(Code)(Java Doc) final public void roll(int field, boolean up)(Code)(Java Doc) public void roll(int field, int amount)(Code)(Java Doc) final public void set(int field, int value)(Code)(Java Doc) final public void set(int year, int month, int date)(Code)(Java Doc) final public void set(int year, int month, int date, int hour, int minute)(Code)(Java Doc) final public void set(int year, int month, int date, int hour, int minute, int second)(Code)(Java Doc) public void setFirstDayOfWeek(int value)(Code)(Java Doc) public void setLenient(boolean lenient)(Code)(Java Doc) final void setLocale(ULocale valid, ULocale actual)(Code)(Java Doc) public void setMinimalDaysInFirstWeek(int value)(Code)(Java Doc) final public void setTime(Date date)(Code)(Java Doc) public void setTimeInMillis(long millis)(Code)(Java Doc) public void setTimeZone(TimeZone value)(Code)(Java Doc) public String toString()(Code)(Java Doc) static boolean unregister(Object registryKey)(Code)(Java Doc) protected void validateField(int field)(Code)(Java Doc) final protected void validateField(int field, int min, int max)(Code)(Java Doc) protected void validateFields()(Code)(Java Doc) protected int weekNumber(int desiredDay, int dayOfPeriod, int dayOfWeek)(Code)(Java Doc) final protected int weekNumber(int dayOfPeriod, int dayOfWeek)(Code)(Java Doc)
|
|
|