public class ChineseCalendar
extends Calendar
java.lang.Object | ||
↳ | android.icu.util.Calendar | |
↳ | android.icu.util.ChineseCalendar |
ChineseCalendar
是实现传统中文日历的Calendar
的具体子类。 中国传统的日历是一个阴历日历:每个月都以新月开始,月份根据太阳事件编号,具体来说,保证11月份总是包含冬至。 为了实现这一点,在某些年份插入闰月。 闰月编号与他们所遵循的月份相同。 决定哪个月是闰月取决于太阳和月球的相对运动。
所有的天文计算都是针对GMT + 8:00的时区和东经120度的时区进行的。 尽管一些日历在1929年之前的日期实施了使用北京当地经度(东经116度25分钟)和时区(GMT + 7:45:40)的历史更准确的惯例,但我们在这里没有实施。
中国日历中的年数有两种不同的计算方法。 第一种方法是从中国历法上指定的第一年黄帝公元2637年的第61年开始连续编号。 第二种方法使用来自同一起点的60年周期,该周期被指定为周期1的第1年。在此类中, EXTENDED_YEAR
字段包含顺序年份计数。 ERA
字段包含循环编号,而YEAR
字段包含循环的年份,值介于1和60之间。
日历的起点有一些变化,有些来源于黄帝统治的第一年,而不是第61年。 这使得年数连续增加60多年,循环数大于本类实施的数字。
因为ChineseCalendar
定义了一个附加字段并重新定义了ERA
字段的使用方式,所以它需要一个新的格式类ChineseDateFormat
。 与往常一样,使用方法DateFormat.getXxxInstance(Calendar cal,...)
获取此日历的格式化程序。
参考文献:
这个类不应该被分类。
通常应使用 getInstance(ULocale)
传递 ULocale
标记 "@calendar=chinese"
来实例化 getInstance(ULocale)
"@calendar=chinese"
。
也可以看看:
Inherited constants |
---|
From class android.icu.util.Calendar
|
Inherited fields |
---|
From class android.icu.util.Calendar
|
Public constructors |
|
---|---|
ChineseCalendar() 使用默认时区和区域设置构建 |
|
ChineseCalendar(Date date) 使用缺省语言环境在默认时区中设置的给定日期构建 |
|
ChineseCalendar(int year, int month, int isLeapMonth, int date) 使用默认时区中设置的给定日期构建 |
|
ChineseCalendar(int year, int month, int isLeapMonth, int date, int hour, int minute, int second) 使用默认的 |
|
ChineseCalendar(int era, int year, int month, int isLeapMonth, int date) 使用默认时区中设置的给定日期构建 |
|
ChineseCalendar(int era, int year, int month, int isLeapMonth, int date, int hour, int minute, int second) 使用默认的 |
|
ChineseCalendar(Locale aLocale) 根据给定语言环境的默认时区中的当前时间构造一个 |
|
ChineseCalendar(TimeZone zone) 构建 |
|
ChineseCalendar(TimeZone zone, Locale aLocale) 根据给定语言环境给定时区中的当前时间构建 |
|
ChineseCalendar(ULocale locale) 根据给定语言环境的默认时区中的当前时间构造一个 |
|
ChineseCalendar(TimeZone zone, ULocale locale) 根据当前时间和给定语言环境的给定时区构建 |
Public methods |
|
---|---|
void |
add(int field, int amount) 重写日历以正确处理闰月。 |
String |
getType() [icu]返回此Calendar对象的日历类型名称字符串。 |
void |
roll(int field, int amount) 重写日历以正确处理闰月。 |
Protected methods |
|
---|---|
int[][][] |
getFieldResolutionTable() 重写日历以将IS_LEAP_MONTH添加到字段解析表。 |
void |
handleComputeFields(int julianDay) 重写日历以计算特定于中国日历系统的几个字段。 |
int |
handleComputeMonthStart(int eyear, int month, boolean useMonth) 在给定的延长年份中,返回特定月份第一天之前的Julian日数。 |
DateFormat |
handleGetDateFormat(String pattern, String override, ULocale locale) 创建适合此日历的 |
int |
handleGetExtendedYear() 实现抽象Calendar方法以返回当前字段定义的扩展年份。 |
int |
handleGetLimit(int field, int limitType) 重写日历以返回给定字段的限制值。 |
int |
handleGetMonthLength(int extendedYear, int month) 覆盖日历方法以返回给定扩展年份和月份的天数。 |
Inherited methods |
|
---|---|
From class android.icu.util.Calendar
|
|
From class java.lang.Object
|
|
From interface java.lang.Comparable
|
ChineseCalendar (Date date)
使用缺省区域设置在默认时区中设置的给定日期构建 ChineseCalendar
。
Parameters | |
---|---|
date |
Date : The date to which the new calendar is set. |
ChineseCalendar (int year, int month, int isLeapMonth, int date)
使用默认时区中设置的给定日期构建 ChineseCalendar
,默认区域设置为 FORMAT
。
Parameters | |
---|---|
year |
int : The value used to set the calendar's YEAR time field. |
month |
int : The value used to set the calendar's MONTH time field. The value is 0-based. e.g., 0 for January. |
isLeapMonth |
int : The value used to set the Chinese calendar's (@link #IS_LEAP_MONTH) time field. |
date |
int : The value used to set the calendar's DATE time field. |
也可以看看:
ChineseCalendar (int year, int month, int isLeapMonth, int date, int hour, int minute, int second)
构造一个 ChineseCalendar
同为缺省默认时区设置定日期和时间 FORMAT
语言环境。
Parameters | |
---|---|
year |
int : the value used to set the YEAR time field in the calendar. |
month |
int : the value used to set the MONTH time field in the calendar. Note that the month value is 0-based. e.g., 0 for January. |
isLeapMonth |
int : the value used to set the IS_LEAP_MONTH time field in the calendar. |
date |
int : the value used to set the DATE time field in the calendar. |
hour |
int : the value used to set the HOUR_OF_DAY time field in the calendar. |
minute |
int : the value used to set the MINUTE time field in the calendar. |
second |
int : the value used to set the SECOND time field in the calendar. |
也可以看看:
ChineseCalendar (int era, int year, int month, int isLeapMonth, int date)
使用默认时区中设置的给定日期构建一个 ChineseCalendar
,默认区域设置为 FORMAT
。
Parameters | |
---|---|
era |
int : The value used to set the calendar's ERA time field. |
year |
int : The value used to set the calendar's YEAR time field. |
month |
int : The value used to set the calendar's MONTH time field. The value is 0-based. e.g., 0 for January. |
isLeapMonth |
int : The value used to set the Chinese calendar's (@link #IS_LEAP_MONTH) time field. |
date |
int : The value used to set the calendar's DATE time field. |
也可以看看:
ChineseCalendar (int era, int year, int month, int isLeapMonth, int date, int hour, int minute, int second)
构造一个 ChineseCalendar
同为缺省默认时区设置定日期和时间 FORMAT
语言环境。
Parameters | |
---|---|
era |
int : the value used to set the calendar's ERA time field. |
year |
int : the value used to set the YEAR time field in the calendar. |
month |
int : the value used to set the MONTH time field in the calendar. Note that the month value is 0-based. e.g., 0 for January. |
isLeapMonth |
int : the value used to set the IS_LEAP_MONTH time field in the calendar. |
date |
int : the value used to set the DATE time field in the calendar. |
hour |
int : the value used to set the HOUR_OF_DAY time field in the calendar. |
minute |
int : the value used to set the MINUTE time field in the calendar. |
second |
int : the value used to set the SECOND time field in the calendar. |
也可以看看:
ChineseCalendar (Locale aLocale)
根据给定语言环境的默认时区中的当前时间构造一个 ChineseCalendar
。
Parameters | |
---|---|
aLocale |
Locale : The given locale |
ChineseCalendar (TimeZone zone)
构建 ChineseCalendar
基于给定的时区的当前时间的默认 FORMAT
语言环境。
Parameters | |
---|---|
zone |
TimeZone : the given time zone |
也可以看看:
ChineseCalendar (TimeZone zone, Locale aLocale)
根据给定语言环境给定时区的当前时间构建 ChineseCalendar
。
Parameters | |
---|---|
zone |
TimeZone : the given time zone |
aLocale |
Locale : the given locale |
ChineseCalendar (ULocale locale)
根据给定语言环境的默认时区中的当前时间构造一个 ChineseCalendar
。
Parameters | |
---|---|
locale |
ULocale : the given ulocale |
ChineseCalendar (TimeZone zone, ULocale locale)
基于给定语言环境的给定时区,基于当前时间构建 ChineseCalendar
。
Parameters | |
---|---|
zone |
TimeZone : the given time zone |
locale |
ULocale : the given ulocale |
void add (int field, int amount)
重写日历以正确处理闰月。
Parameters | |
---|---|
field |
int : the time field. |
amount |
int : the amount to add to the field. |
String getType ()
[icu]返回此Calendar对象的日历类型名称字符串。 返回的字符串是传统的ICU日历属性值,例如“gregorian”或“japanese”。
请参阅http://www.unicode.org/reports/tr35/#Key_Type_Definitions中有关语言环境ID的日历属性的type =“old type name”
Returns | |
---|---|
String |
legacy calendar type name string |
void roll (int field, int amount)
重写日历以正确处理闰月。
Parameters | |
---|---|
field |
int : the calendar field to roll. |
amount |
int : the amount by which the field should be rolled. |
int[][][] getFieldResolutionTable ()
重写日历以将IS_LEAP_MONTH添加到字段解析表。
Returns | |
---|---|
int[][][] |
void handleComputeFields (int julianDay)
重写日历以计算特定于中国日历系统的几个字段。 这些是:
计算中文日历专用字段IS_LEAP_MONTH。
Parameters | |
---|---|
julianDay |
int
|
int handleComputeMonthStart (int eyear, int month, boolean useMonth)
在给定的延长年份中,返回特定月份第一天之前的Julian日数。
注意:此方法读取IS_LEAP_MONTH字段以确定给定月份是否为闰月。
Parameters | |
---|---|
eyear |
int : the extended year |
month |
int : the zero-based month. The month is also determined by reading the IS_LEAP_MONTH field. |
useMonth |
boolean : if false, compute the day before the first day of the given year, otherwise, compute the day before the first day of the given month |
Returns | |
---|---|
int |
the Julian day number of the day before the first day of the given month and year |
DateFormat handleGetDateFormat (String pattern, String override, ULocale locale)
创建适合此日历的DateFormat
。 这是子类重写的框架方法。 此方法负责根据需要创建日历特定的DateFormat和DateFormatSymbols对象。
Parameters | |
---|---|
pattern |
String : the pattern, specific to the DateFormat subclass |
override |
String
|
locale |
ULocale : the locale for which the symbols should be drawn |
Returns | |
---|---|
DateFormat |
a DateFormat appropriate to this calendar |
int handleGetExtendedYear ()
实现抽象Calendar方法以返回当前字段定义的扩展年份。 这将使用ERA和YEAR字段作为周期和年度周期,或者将EXTENDED_YEAR字段用作连续年份数,具体取决于哪个更新。
Returns | |
---|---|
int |
the extended year |
int handleGetLimit (int field, int limitType)
重写日历以返回给定字段的限制值。
Parameters | |
---|---|
field |
int : one of the above field numbers |
limitType |
int : one of MINIMUM , GREATEST_MINIMUM , LEAST_MAXIMUM , or MAXIMUM |
Returns | |
---|---|
int |
int handleGetMonthLength (int extendedYear, int month)
覆盖日历方法以返回给定扩展年份和月份的天数。
注意:此方法还读取IS_LEAP_MONTH字段以确定给定的月份是否为闰月。
Parameters | |
---|---|
extendedYear |
int
|
month |
int
|
Returns | |
---|---|
int |