Calendrical.Ethiopic.AmeteAlem
(Calendrical v0.3.0)
Copy Markdown
Implementation of the Ethiopic calendar with the Amete Alem (Era of the World, Anno Mundi) year numbering.
This calendar is structurally identical to Calendrical.Ethiopic โ
same 13-month layout, same leap-year rule, same days-in-month โ but
the year is counted from the traditional Ethiopian Christian date
of the creation of the world rather than from the Era of Mercy:
amete_alem_year = amete_mihret_year + 5500So 1 Amete Alem = -5499 Julian = -5492-07-17 proleptic Gregorian (per CLDR era data) and modern Ethiopic year 2017 (Amete Mihret) = 7517 Amete Alem.
Days are assumed to begin at midnight rather than at sunset.
Reference
- Dershowitz & Reingold, Calendrical Calculations (4th ed.), ยง4.2 ("Ethiopic and Coptic Calendars").
- CLDR
:ethiopic_amete_alemcalendar type. The CLDR era data places the aa era at proleptic Gregorian-5492-07-17.
See Calendrical.Ethiopic for the month structure and the
mod(year, 4) == 3 leap-year rule.
Summary
Functions
Returns the Amete Alem year for the given Amete Mihret
(Calendrical.Ethiopic) year.
Returns the corresponding Calendrical.Ethiopic (Amete Mihret)
year for the given Amete Alem year.
Identifies whether this calendar is month or week based.
Returns the calendar year as displayed on rendered calendars.
Defines the CLDR calendar type for this calendar.
Returns the cyclic year as displayed on rendered calendars.
Returns an Amete Alem {year, month, day} for the given ISO day
number.
Returns the number of ISO days for the given Amete Alem year,
month, and day.
Calculates the day and era from the given
year, month, and day.
Calculates the day of the year from the given
year, month, and day.
Returns how many days there are in the given month.
Returns how many days there are in the given year and month.
Returns the number days in a a week.
Returns the number days in a given year.
Returns the offset (in years) between the Amete Alem (Era of the
World) and the Amete Mihret (Era of Mercy) used by
Calendrical.Ethiopic. amete_alem_year - era_offset() yields
the corresponding Amete Mihret year.
Returns the extended year as displayed on rendered calendars.
Calculates the ISO week of the year from the
given year, month, and day.
Returns a Date.Range.t/0 representing
a given month of a year.
Returns the month of the year from the given
year, month, and day.
Returns the number of months in a leap year.
Returns the number of months in a normal year.
Returns the number of months in a
given year.
Converts the t:Calendar.iso_days format to the
datetime format specified by this calendar.
Returns the t:Calendar.iso_days format of
the specified date.
Returns the number of periods in a given
year. A period corresponds to a month
in month-based calendars and a week in
week-based calendars.
Adds an increment number of date_parts
to a year-month-day.
Returns a Date.Range.t/0 representing
a given quarter of a year.
Returns the quarter of the year from the given
year, month, and day.
Returns the related gregorain year as displayed on rendered calendars.
Determines if the date given is valid according to
this calendar.
Returns a Date.Range.t/0 representing
a given week of a year.
Calculates the week of the year from the given
year, month, and day.
Calculates the week of the year from the given
year, month, and day.
Returns the number of weeks in a
given year.
Returns a Date.Range.t/0 representing
a given year.
Calculates the year and era from the given year.
Calculates the year and era from the given date.
Types
Functions
Returns the Amete Alem year for the given Amete Mihret
(Calendrical.Ethiopic) year.
Returns the corresponding Calendrical.Ethiopic (Amete Mihret)
year for the given Amete Alem year.
Identifies whether this calendar is month or week based.
@spec calendar_year(Calendar.year(), Calendar.month(), Calendar.day()) :: Calendar.year()
Returns the calendar year as displayed on rendered calendars.
Defines the CLDR calendar type for this calendar.
This type is used in support of Calendrical. localize/3.
@spec cyclic_year(Calendar.year(), Calendar.month(), Calendar.day()) :: Calendar.year()
Returns the cyclic year as displayed on rendered calendars.
Returns an Amete Alem {year, month, day} for the given ISO day
number.
Returns the number of ISO days for the given Amete Alem year,
month, and day.
@spec day_of_era(Calendar.year(), Calendar.month(), Calendar.day()) :: {day :: Calendar.day(), era :: Calendar.era()}
Calculates the day and era from the given
year, month, and day.
By default we consider on two eras: before the epoch and on-or-after the epoch.
@spec day_of_year(Calendar.year(), Calendar.month(), Calendar.day()) :: Calendar.day()
Calculates the day of the year from the given
year, month, and day.
@spec days_in_month(Calendar.month()) :: Calendar.month() | {:ambiguous, Range.t() | [pos_integer()]} | {:error, :undefined}
Returns how many days there are in the given month.
Must be implemented in derived calendars because we cannot know what the calendar format is.
@spec days_in_month(Calendar.year(), Calendar.month()) :: Calendar.month()
@spec days_in_month(year(), month()) :: 5..30
Returns how many days there are in the given year and month.
Returns the number days in a a week.
Returns the number days in a given year.
The year is the number of years since the epoch.
@spec era_offset() :: 5500
Returns the offset (in years) between the Amete Alem (Era of the
World) and the Amete Mihret (Era of Mercy) used by
Calendrical.Ethiopic. amete_alem_year - era_offset() yields
the corresponding Amete Mihret year.
@spec extended_year(Calendar.year(), Calendar.month(), Calendar.day()) :: Calendar.year()
Returns the extended year as displayed on rendered calendars.
@spec iso_week_of_year(Calendar.year(), Calendar.month(), Calendar.day()) :: {:error, :not_defined}
Calculates the ISO week of the year from the
given year, month, and day.
By default this function always returns
{:error, :not_defined}.
Returns a Date.Range.t/0 representing
a given month of a year.
@spec month_of_year(Calendar.year(), Calendar.month(), Calendar.day()) :: Calendar.month() | {Calendar.month(), Calendrical.leap_month?()}
Returns the month of the year from the given
year, month, and day.
Returns the number of months in a leap year.
Returns the number of months in a normal year.
Returns the number of months in a
given year.
@spec naive_datetime_from_iso_days(Calendar.iso_days()) :: {Calendar.year(), Calendar.month(), Calendar.day(), Calendar.hour(), Calendar.minute(), Calendar.second(), Calendar.microsecond()}
Converts the t:Calendar.iso_days format to the
datetime format specified by this calendar.
@spec naive_datetime_to_iso_days( Calendar.year(), Calendar.month(), Calendar.day(), Calendar.hour(), Calendar.minute(), Calendar.second(), Calendar.microsecond() ) :: Calendar.iso_days()
Returns the t:Calendar.iso_days format of
the specified date.
Returns the number of periods in a given
year. A period corresponds to a month
in month-based calendars and a week in
week-based calendars.
Adds an increment number of date_parts
to a year-month-day.
date_part can be :months only.
Returns a Date.Range.t/0 representing
a given quarter of a year.
@spec quarter_of_year(Calendar.year(), Calendar.month(), Calendar.day()) :: Calendrical.quarter()
Returns the quarter of the year from the given
year, month, and day.
Determines if the date given is valid according to
this calendar.
Returns a Date.Range.t/0 representing
a given week of a year.
@spec week_of_month(Calendar.year(), Calendar.month(), Calendar.day()) :: {pos_integer(), pos_integer()} | {:error, :not_defined}
Calculates the week of the year from the given
year, month, and day.
By default this function always returns
{:error, :not_defined}.
@spec week_of_year(Calendar.year(), Calendar.month(), Calendar.day()) :: {:error, :not_defined}
Calculates the week of the year from the given
year, month, and day.
By default this function always returns
{:error, :not_defined}.
Returns the number of weeks in a
given year.
Returns a Date.Range.t/0 representing
a given year.
@spec year_of_era(Calendar.year()) :: {year :: Calendar.year(), era :: Calendar.era()}
Calculates the year and era from the given year.
@spec year_of_era(Calendar.year(), Calendar.month(), Calendar.day()) :: {year :: Calendar.year(), era :: Calendar.era()}
Calculates the year and era from the given date.