Most visited

Recently visited

Added in API level 24

ChineseCalendar

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"

也可以看看:

Summary

Inherited constants

From class android.icu.util.Calendar

Inherited fields

From class android.icu.util.Calendar

Public constructors

ChineseCalendar()

使用默认时区和区域设置构建 ChineseCalendar

ChineseCalendar(Date date)

使用缺省语言环境在默认时区中设置的给定日期构建 ChineseCalendar

ChineseCalendar(int year, int month, int isLeapMonth, int date)

使用默认时区中设置的给定日期构建 ChineseCalendar ,默认时区为 FORMAT区域设置。

ChineseCalendar(int year, int month, int isLeapMonth, int date, int hour, int minute, int second)

使用默认的 FORMAT区域设置为默认时区设置的给定日期和时间构造一个 ChineseCalendar

ChineseCalendar(int era, int year, int month, int isLeapMonth, int date)

使用默认时区中设置的给定日期构建 ChineseCalendar ,默认区域设置为 FORMAT

ChineseCalendar(int era, int year, int month, int isLeapMonth, int date, int hour, int minute, int second)

使用默认的 FORMAT区域设置为默认时区设置的给定日期和时间构造一个 ChineseCalendar

ChineseCalendar(Locale aLocale)

根据给定语言环境的默认时区中的当前时间构造一个 ChineseCalendar

ChineseCalendar(TimeZone zone)

构建 ChineseCalendar基于给定的时区的当前时间的默认 FORMAT语言环境。

ChineseCalendar(TimeZone zone, Locale aLocale)

根据给定语言环境给定时区中的当前时间构建 ChineseCalendar

ChineseCalendar(ULocale locale)

根据给定语言环境的默认时区中的当前时间构造一个 ChineseCalendar

ChineseCalendar(TimeZone zone, ULocale locale)

根据当前时间和给定语言环境的给定时区构建 ChineseCalendar

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)

创建适合此日历的 DateFormat

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

Public constructors

ChineseCalendar

Added in API level 24
ChineseCalendar ()

使用默认时区和区域设置构建 ChineseCalendar

ChineseCalendar

Added in API level 24
ChineseCalendar (Date date)

使用缺省区域设置在默认时区中设置的给定日期构建 ChineseCalendar

Parameters
date Date: The date to which the new calendar is set.

ChineseCalendar

Added in API level 24
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

Added in API level 24
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

Added in API level 24
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

Added in API level 24
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

Added in API level 24
ChineseCalendar (Locale aLocale)

根据给定语言环境的默认时区中的当前时间构造一个 ChineseCalendar

Parameters
aLocale Locale: The given locale

ChineseCalendar

Added in API level 24
ChineseCalendar (TimeZone zone)

构建 ChineseCalendar基于给定的时区的当前时间的默认 FORMAT语言环境。

Parameters
zone TimeZone: the given time zone

也可以看看:

ChineseCalendar

Added in API level 24
ChineseCalendar (TimeZone zone, 
                Locale aLocale)

根据给定语言环境给定时区的当前时间构建 ChineseCalendar

Parameters
zone TimeZone: the given time zone
aLocale Locale: the given locale

ChineseCalendar

Added in API level 24
ChineseCalendar (ULocale locale)

根据给定语言环境的默认时区中的当前时间构造一个 ChineseCalendar

Parameters
locale ULocale: the given ulocale

ChineseCalendar

Added in API level 24
ChineseCalendar (TimeZone zone, 
                ULocale locale)

基于给定语言环境的给定时区,基于当前时间构建 ChineseCalendar

Parameters
zone TimeZone: the given time zone
locale ULocale: the given ulocale

Public methods

add

Added in API level 24
void add (int field, 
                int amount)

重写日历以正确处理闰月。

Parameters
field int: the time field.
amount int: the amount to add to the field.

getType

Added in API level 24
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

roll

Added in API level 24
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.

Protected methods

getFieldResolutionTable

Added in API level 24
int[][][] getFieldResolutionTable ()

重写日历以将IS_LEAP_MONTH添加到字段解析表。

Returns
int[][][]

handleComputeFields

Added in API level 24
void handleComputeFields (int julianDay)

重写日历以计算特定于中国日历系统的几个字段。 这些是:

  • 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.

计算中文日历专用字段IS_LEAP_MONTH。

Parameters
julianDay int

handleComputeMonthStart

Added in API level 24
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

handleGetDateFormat

Added in API level 24
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

handleGetExtendedYear

Added in API level 24
int handleGetExtendedYear ()

实现抽象Calendar方法以返回当前字段定义的扩展年份。 这将使用ERA和YEAR字段作为周期和年度周期,或者将EXTENDED_YEAR字段用作连续年份数,具体取决于哪个更新。

Returns
int the extended year

handleGetLimit

Added in API level 24
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

handleGetMonthLength

Added in API level 24
int handleGetMonthLength (int extendedYear, 
                int month)

覆盖日历方法以返回给定扩展年份和月份的天数。

注意:此方法还读取IS_LEAP_MONTH字段以确定给定的月份是否为闰月。

Parameters
extendedYear int
month int
Returns
int

Hooray!