Эта библиотека реализует календарь солнечной хиджры, который используется в Иране и Афганистане.
Из Википедии:
Календарь солнечной хиджры (персидский: غا شماری هجری خورشیدی, латинизированный: gāh-shomāri-ye hejri-ye khorshidi; пушту: لمريز لېږدیز خیز), также называемый календарем солнечной хиджры или Шамси Хи календарь jri, сокращенно SH, является официальным календарь Ирана и Афганистан. Он начинается в день мартовского равноденствия (Навруз), как это определено астрономическими расчетами для меридиана иранского стандартного времени (52,5 ° восточной долготы, UTC + 03:30).
Его определение начала каждого года является астрономически точным из года в год, в отличие от более фиксированного григорианского календаря или «календаря нашей эры», который в среднем имеет одинаковую продолжительность года и обеспечивает ту же точность (более простой шаблон). ) календарь из 365 дней в течение трех лет подряд плюс дополнительный день в следующем году, за исключением исключений из последнего в течение трех лет. каждые четыре столетия). Начало года и количество дней в нем привязаны к одному из двух равноденствий — астрономически важных дней, продолжительность дня которых равна ночи. Это приводит к меньшей изменчивости всех небесных тел при сравнении конкретной календарной даты одного года с другими.[2]
Каждому из двенадцати месяцев соответствует свой знак зодиака. В первых шести месяцах 31 день, в следующих пяти — 30 дней, а в последнем месяце — 29 дней в обычные годы и 30 дней в високосные. Новый год всегда приходится на мартовское равноденствие.
ex_cldr_calendars_persian соответствует поведениям Calendar
и Cldr.Calendar
, поэтому поддерживаются функции Date
, DateTime
, NaiveDateTime
, Time
и Calendar
.
Для версий Elixir до 1.9 включительно дату можно создать следующим образом:
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"
Эта библиотека является частью библиотек CLDR для Elixir, включая:
Вы можете установить пакет, добавив cldr_calendars_persian
в список зависимостей в mix.exs
:
def deps do
[
{ :ex_cldr_calendars_persian , "~> 1.0" }
]
end
Документацию можно найти по адресу https://hexdocs.pm/ex_cldr_persian_calendars.