public class IslamicCalendar
extends Calendar
java.lang.Object | ||
↳ | android.icu.util.Calendar | |
↳ | android.icu.util.IslamicCalendar |
IslamicCalendar
是实现伊斯兰民间和宗教日历的Calendar
的子类。 它被用作阿拉伯世界大部分地区的公民日历和全世界伊斯兰信仰的礼仪日历。 这个日历也被称为“Hijri”日历,因为它开始于公元622年7月15日星期四穆罕默德移民(或“hijra”)到麦地那时(朱利安)。
伊斯兰教的日历是严格的阴历,因此伊斯兰的十二个月的年份与包括格里高利在内的大多数其他日历系统所使用的太阳年不相符。 一个伊斯兰教的年份平均长约354天,因此每一个伊斯兰教的一年在相应的公历年前11天左右开始。
日历的每个月都开始于新月的新月在日落时可见。 但是,为了使本课程中的时间字段与其他日历中的时间字段保持同步,并使用本地时钟时间,我们将日期和月份视为从午夜开始,大约相应日落后6小时。
伊斯兰历有三种主要的变体形式。 首先是公民日历,它使用29和30天交替的固定周期,每30年增加11个月的闰日。 这个日历很容易计算,因此可以预先预测,因此它被用作一些阿拉伯国家的公民日历。 这是新创建的IslamicCalendar
对象的默认行为。
然而,伊斯兰教的宗教日历和沙特阿拉伯的乌姆拉古拉日历是基于对新月的观察 。 因此,它受观测位置,日落时间的季节变化,月球轨道偏心率,甚至观测地点的天气影响。 这使得不可能提前计算,并且导致宗教日历中的一个月的开始与公民日历的开始最多不同于三天。
利用天文计算得到太阳和月球的位置,月球的照度和其他因素,就有可能以相当高的确定性确定一个月的开始。 但是,这些计算非常复杂,因此速度很慢,因此大多数算法(包括此处使用的算法)都只是真实天文计算的近似值。 目前,这个类中使用的近似值相当简单; 他们将在更高版本的代码中得到改进。
像伊斯兰教的宗教日历一样, Umm al-Qura也是基于新月的瞄准方法,但由沙特阿拉伯标准化。
使用固定周期的 公民日历。
这个类不应该被分类。
伊斯兰日历通常应该使用 getInstance(ULocale)
实例化 ULocale
,标签 "@calendar=islamic"
或 "@calendar=islamic-civil"
或 "@calendar=islamic-umalqura"
。
也可以看看:
Nested classes |
|
---|---|
枚举 |
IslamicCalendar.CalculationType 枚举可用的日历计算类型 |
Constants |
|
---|---|
int |
DHU_AL_HIJJAH 常年为伊斯兰教十二个月的Dhu al-Hijjah。 |
int |
DHU_AL_QIDAH 对于伊斯兰年的第11个月的Dhu al-Qi'dah来说是不变的。 |
int |
JUMADA_1 对于伊斯兰年的第5个月的Jumada al-awwal或(Jumada I)是不变的。 |
int |
JUMADA_2 对于Jumada al-thani或(Jumada II)而言,这是伊斯兰年的第六个月。 |
int |
MUHARRAM 穆哈拉姆是伊斯兰年的第一个月。 |
int |
RABI_1 不断为Rabi'al-awwal(或Rabi'I),伊斯兰年的第三个月。 |
int |
RABI_2 对于Rabi'al-thani或(Rabi'II)来说,这是伊斯兰年的第四个月。 |
int |
RAJAB 拉贾布是伊斯兰年的第七个月。 |
int |
RAMADAN 斋月是伊斯兰教年的第九个月。 |
int |
SAFAR 萨法尔是伊斯兰年的第二个月。 |
int |
SHABAN 沙班的不变,伊斯兰年的第八个月。 |
int |
SHAWWAL Shawwal是伊斯兰教十年的第十个月。 |
Inherited constants |
---|
From class android.icu.util.Calendar
|
Inherited fields |
---|
From class android.icu.util.Calendar
|
Public constructors |
|
---|---|
IslamicCalendar() 构造一个默认 |
|
IslamicCalendar(TimeZone zone) 根据给定时区中的当前时间构造一个 |
|
IslamicCalendar(Locale aLocale) 根据给定语言环境的默认时区中的当前时间构造一个 |
|
IslamicCalendar(ULocale locale) 根据给定语言环境的默认时区中的当前时间构造一个 |
|
IslamicCalendar(TimeZone zone, Locale aLocale) 基于给定语言环境给定时区中的当前时间构造 |
|
IslamicCalendar(TimeZone zone, ULocale locale) 基于给定语言环境给定时区中的当前时间构造 |
|
IslamicCalendar(Date date) 构造一个 |
|
IslamicCalendar(int year, int month, int date) 构造一个 |
|
IslamicCalendar(int year, int month, int date, int hour, int minute, int second) 构造一个 |
Public methods |
|
---|---|
IslamicCalendar.CalculationType |
getCalculationType() 获取此日历的计算类型。 |
String |
getType() [icu]返回此Calendar对象的日历类型名称字符串。 |
void |
setCalculationType(IslamicCalendar.CalculationType type) 设置此日历的计算类型。 |
Protected methods |
|
---|---|
void |
handleComputeFields(int julianDay) 重写日历以计算特定于伊斯兰日历系统的几个字段。 |
int |
handleComputeMonthStart(int eyear, int month, boolean useMonth) 返回给定扩展年份中给定月份的第一天之前的Julian日数。 |
int |
handleGetExtendedYear() 返回当前字段定义的扩展年份。 |
int |
handleGetLimit(int field, int limitType) 用于定义不同类型限制的子类API。 |
int |
handleGetMonthLength(int extendedYear, int month) 返回给定月份的长度(以天计)。 |
int |
handleGetYearLength(int extendedYear) 返回给定伊斯兰年的天数 |
Inherited methods |
|
---|---|
From class android.icu.util.Calendar
|
|
From class java.lang.Object
|
|
From interface java.lang.Comparable
|
int DHU_AL_QIDAH
对于伊斯兰年的第11个月的Dhu al-Qi'dah来说是不变的。
常量值:10(0x0000000a)
int JUMADA_1
对于伊斯兰年的第5个月的Jumada al-awwal或(Jumada I)是不变的。
常量值:4(0x00000004)
int JUMADA_2
对于Jumada al-thani或(Jumada II)而言,这是伊斯兰年的第六个月。
常量值:5(0x00000005)
IslamicCalendar ()
构造一个默认 IslamicCalendar
使用默认时区的当前时间的默认 FORMAT
语言环境。
也可以看看:
IslamicCalendar (TimeZone zone)
构造一个 IslamicCalendar
基于与默认定的时区当前时间 FORMAT
区域。
Parameters | |
---|---|
zone |
TimeZone : the given time zone. |
也可以看看:
IslamicCalendar (Locale aLocale)
根据给定语言环境的默认时区中的当前时间构造 IslamicCalendar
。
Parameters | |
---|---|
aLocale |
Locale : the given locale. |
IslamicCalendar (ULocale locale)
根据给定语言环境的默认时区中的当前时间构造一个 IslamicCalendar
。
Parameters | |
---|---|
locale |
ULocale : the given ulocale. |
IslamicCalendar (TimeZone zone, Locale aLocale)
根据给定语言环境给定时区中的当前时间构造一个 IslamicCalendar
。
Parameters | |
---|---|
zone |
TimeZone : the given time zone. |
aLocale |
Locale : the given locale. |
IslamicCalendar (TimeZone zone, ULocale locale)
基于给定语言环境给定时区内的当前时间构造 IslamicCalendar
。
Parameters | |
---|---|
zone |
TimeZone : the given time zone. |
locale |
ULocale : the given ulocale. |
IslamicCalendar (Date date)
构造一个 IslamicCalendar
用给出的日期在默认的时区设置与默认 FORMAT
语言环境。
Parameters | |
---|---|
date |
Date : The date to which the new calendar is set. |
也可以看看:
IslamicCalendar (int year, int month, int date)
构造一个 IslamicCalendar
用给出的日期在默认的时区设置与默认 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 Muharram. |
date |
int : the value used to set the DATE time field in the calendar. |
也可以看看:
IslamicCalendar (int year, int month, int date, int hour, int minute, int second)
构造一个 IslamicCalendar
同为缺省默认时区设置定日期和时间 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 Muharram. |
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. |
也可以看看:
IslamicCalendar.CalculationType getCalculationType ()
获取此日历的计算类型。
Returns | |
---|---|
IslamicCalendar.CalculationType |
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 setCalculationType (IslamicCalendar.CalculationType type)
设置此日历的计算类型。
Parameters | |
---|---|
type |
IslamicCalendar.CalculationType
|
void handleComputeFields (int julianDay)
重写日历以计算特定于伊斯兰日历系统的几个字段。 这些是:
Parameters | |
---|---|
julianDay |
int
|
int handleComputeMonthStart (int eyear, int month, boolean useMonth)
返回给定扩展年份中给定月份的第一天之前的Julian日数。 子类应该重写此方法来实现其日历系统。
Parameters | |
---|---|
eyear |
int : the extended year |
month |
int : the zero-based month, or 0 if useMonth is false |
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 |
int handleGetExtendedYear ()
返回当前字段定义的扩展年份。 这将使用EXTENDED_YEAR字段或特定于日历系统的YEAR和超年字段(如ERA),具体取决于哪一组字段较新。
Returns | |
---|---|
int |
the extended year |
int handleGetLimit (int field, int limitType)
用于定义不同类型限制的子类API。 子类必须实现此方法才能返回以下字段的限制:
ERA YEAR MONTH WEEK_OF_YEAR WEEK_OF_MONTH DAY_OF_MONTH DAY_OF_YEAR DAY_OF_WEEK_IN_MONTH YEAR_WOY EXTENDED_YEAR
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)
返回给定月份的长度(以天计)。
Parameters | |
---|---|
extendedYear |
int : The hijri year |
month |
int : The hijri month, 0-based |
Returns | |
---|---|
int |
int handleGetYearLength (int extendedYear)
返回给定伊斯兰年的天数
Parameters | |
---|---|
extendedYear |
int
|
Returns | |
---|---|
int |