该库实现了伊朗和阿富汗使用的阳历回历。
来自维基百科:
阳历回历(波斯语: هро هгрин гарий доло ,罗马化: gāh-shomāri-ye hejri-ye khorshidi;普什图语: אאזײ ևײ ײ ),也称为阳历回历或 Shamsi Hijri 日历,以及被称为SH,是官方的伊朗的日历和阿富汗。根据伊朗标准时间子午线(52.5°E,UTC+03:30)的天文计算确定,它始于三月春分(Nowruz)。
它对每年开始的确定在天文学上是准确的,与更固定的公历或“公历”相反,后者平均后具有相同的年份长度,达到相同的精度(更简单的模式)连续三年 365 天的日历加上下一年的额外一天,但后者三年除外。每四个世纪就有一次)。一年的开始和天数仍然固定在两个春分点之一,这是天文学上重要的日子,昼夜长度相同。当将一年中的特定日历日期与其他日期进行比较时,它会导致所有天体的变异性较小。 [2]
十二个月中的每个月都对应一个十二生肖。前六个月有 31 天,接下来的五个月有 30 天,最后一个月平年有 29 天,闰年有 30 天。元旦总是在三月春分这一天。
ex_cldr_calendars_persian 符合Calendar
和Cldr.Calendar
行为,因此支持Date
、 DateTime
、 NaiveDateTime
、 Time
和Calendar
函数中的函数。
对于 1.9 及之前的 Elixir 版本,可以通过以下方式创建日期:
iex > { :ok , date } = Date . new ( 1354 , 1 , 1 , Cldr.Calendar.Persian )
{ :ok , ~D [ 1354-01-01 Cldr.Calendar.Persian ] }
对于 Elixir 1.10 及更高版本, Sigil_D
支持用户定义的日历:
iex> ~D[1354-01-01 Cldr.Calendar.Persian]
~D[1354-01-01 Cldr.Calendar.Persian]
ex_cldr_calendars_persian
依赖于支持日历本地化的 ex_cldr_calendars。有关完整的日期和时间格式,请参阅 ex_cldr_dates_times。
基本本地化由Cldr.Calendar.localize/3
执行例如:
iex > Cldr.Calendar . localize ( date , :month , locale: "en" )
"Farvardin"
iex > Cldr.Calendar . localize ( date , :month , locale: "fa" )
"فروردین"
iex > Cldr.Calendar . localize ( date , :day_of_week , locale: "fa" )
"جمعه"
iex > Cldr.Calendar . localize ( date , :day_of_week , locale: "en" )
"Fri"
该库是 Elixir CLDR 库的一部分,包括:
您可以通过将cldr_calendars_persian
添加到mix.exs
中的依赖项列表来安装该包:
def deps do
[
{ :ex_cldr_calendars_persian , "~> 1.0" }
]
end
文档可以在 https://hexdocs.pm/ex_cldr_persian_calendars 找到。