Most visited

Recently visited

Added in API level 24

IslamicCalendar

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"

也可以看看:

Summary

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使用默认时区的当前时间的默认 FORMAT语言环境。

IslamicCalendar(TimeZone zone)

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

IslamicCalendar(Locale aLocale)

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

IslamicCalendar(ULocale locale)

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

IslamicCalendar(TimeZone zone, Locale aLocale)

基于给定语言环境给定时区中的当前时间构造 IslamicCalendar

IslamicCalendar(TimeZone zone, ULocale locale)

基于给定语言环境给定时区中的当前时间构造 IslamicCalendar

IslamicCalendar(Date date)

构造一个 IslamicCalendar用给出的日期在默认的时区设置与默认 FORMAT语言环境。

IslamicCalendar(int year, int month, int date)

构造一个 IslamicCalendar用给出的日期在默认的时区设置与默认 FORMAT语言环境。

IslamicCalendar(int year, int month, int date, int hour, int minute, int second)

构造一个 IslamicCalendar同为缺省默认时区设置定日期和时间 FORMAT语言环境。

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

Constants

DHU_AL_HIJJAH

Added in API level 24
int DHU_AL_HIJJAH

常年为伊斯兰教十二个月的Dhu al-Hijjah。

常量值:11(0x0000000b)

DHU_AL_QIDAH

Added in API level 24
int DHU_AL_QIDAH

对于伊斯兰年的第11个月的Dhu al-Qi'dah来说是不变的。

常量值:10(0x0000000a)

JUMADA_1

Added in API level 24
int JUMADA_1

对于伊斯兰年的第5个月的Jumada al-awwal或(Jumada I)是不变的。

常量值:4(0x00000004)

JUMADA_2

Added in API level 24
int JUMADA_2

对于Jumada al-thani或(Jumada II)而言,这是伊斯兰年的第六个月。

常量值:5(0x00000005)

MUHARRAM

Added in API level 24
int MUHARRAM

穆哈拉姆是伊斯兰年的第一个月。

常量值:0(0x00000000)

RABI_1

Added in API level 24
int RABI_1

不断为Rabi'al-awwal(或Rabi'I),伊斯兰年的第三个月。

常量值:2(0x00000002)

RABI_2

Added in API level 24
int RABI_2

对于Rabi'al-thani或(Rabi'II)来说,这是伊斯兰年的第四个月。

常量值:3(0x00000003)

RAJAB

Added in API level 24
int RAJAB

拉贾布是伊斯兰年的第七个月。

常数值:6(0x00000006)

RAMADAN

Added in API level 24
int RAMADAN

斋月是伊斯兰教年的第九个月。

常量值:8(0x00000008)

SAFAR

Added in API level 24
int SAFAR

萨法尔是伊斯兰年的第二个月。

常数值:1(0x00000001)

SHABAN

Added in API level 24
int SHABAN

沙班的不变,伊斯兰年的第八个月。

常量值:7(0x00000007)

SHAWWAL

Added in API level 24
int SHAWWAL

Shawwal是伊斯兰教十年的第十个月。

常量值:9(0x00000009)

Public constructors

IslamicCalendar

Added in API level 24
IslamicCalendar ()

构造一个默认 IslamicCalendar使用默认时区的当前时间的默认 FORMAT语言环境。

也可以看看:

IslamicCalendar

Added in API level 24
IslamicCalendar (TimeZone zone)

构造一个 IslamicCalendar基于与默认定的时区当前时间 FORMAT区域。

Parameters
zone TimeZone: the given time zone.

也可以看看:

IslamicCalendar

Added in API level 24
IslamicCalendar (Locale aLocale)

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

Parameters
aLocale Locale: the given locale.

IslamicCalendar

Added in API level 24
IslamicCalendar (ULocale locale)

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

Parameters
locale ULocale: the given ulocale.

IslamicCalendar

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

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

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

IslamicCalendar

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

基于给定语言环境给定时区内的当前时间构造 IslamicCalendar

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

IslamicCalendar

Added in API level 24
IslamicCalendar (Date date)

构造一个 IslamicCalendar用给出的日期在默认的时区设置与默认 FORMAT语言环境。

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

也可以看看:

IslamicCalendar

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

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

也可以看看:

Public methods

getCalculationType

Added in API level 24
IslamicCalendar.CalculationType getCalculationType ()

获取此日历的计算类型。

Returns
IslamicCalendar.CalculationType

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

setCalculationType

Added in API level 24
void setCalculationType (IslamicCalendar.CalculationType type)

设置此日历的计算类型。

Parameters
type IslamicCalendar.CalculationType

Protected methods

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.

Parameters
julianDay int

handleComputeMonthStart

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

handleGetExtendedYear

Added in API level 24
int handleGetExtendedYear ()

返回当前字段定义的扩展年份。 这将使用EXTENDED_YEAR字段或特定于日历系统的YEAR和超年字段(如ERA),具体取决于哪一组字段较新。

Returns
int the extended year

handleGetLimit

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

handleGetMonthLength

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

返回给定月份的长度(以天计)。

Parameters
extendedYear int: The hijri year
month int: The hijri month, 0-based
Returns
int

handleGetYearLength

Added in API level 24
int handleGetYearLength (int extendedYear)

返回给定伊斯兰年的天数

Parameters
extendedYear int
Returns
int

Hooray!