pub trait Calendar {
type DateInner: PartialEq<Self::DateInner> + Eq + Clone + Debug;
Show 13 methods
fn date_from_codes(
&self,
era: Era,
year: i32,
month_code: MonthCode,
day: u8
) -> Result<Self::DateInner, CalendarError>;
fn date_from_iso(&self, iso: Date<Iso>) -> Self::DateInner;
fn date_to_iso(&self, date: &Self::DateInner) -> Date<Iso>;
fn months_in_year(&self, date: &Self::DateInner) -> u8;
fn days_in_year(&self, date: &Self::DateInner) -> u32;
fn days_in_month(&self, date: &Self::DateInner) -> u8;
fn debug_name(&self) -> &'static str;
fn year(&self, date: &Self::DateInner) -> FormattableYear;
fn month(&self, date: &Self::DateInner) -> FormattableMonth;
fn day_of_month(&self, date: &Self::DateInner) -> DayOfMonth;
fn day_of_year_info(&self, date: &Self::DateInner) -> DayOfYearInfo;
fn day_of_week(&self, date: &Self::DateInner) -> IsoWeekday { ... }
fn any_calendar_kind(&self) -> Option<AnyCalendarKind> { ... }
}
Expand description
A calendar implementation
Only implementors of Calendar
should care about these methods, in general users of
these calendars should use the methods on Date
instead.
Individual Calendar
implementations may have inherent utility methods
allowing for direct construction, etc.
For ICU4X 1.0, implementing this trait or calling methods directly is considered
unstable and prone to change, especially for offset_date()
and until()
.
Associated Types
Required methods
fn date_from_codes(
&self,
era: Era,
year: i32,
month_code: MonthCode,
day: u8
) -> Result<Self::DateInner, CalendarError>
fn date_from_codes(
&self,
era: Era,
year: i32,
month_code: MonthCode,
day: u8
) -> Result<Self::DateInner, CalendarError>
Construct a date from era/month codes and fields
fn date_from_iso(&self, iso: Date<Iso>) -> Self::DateInner
fn date_from_iso(&self, iso: Date<Iso>) -> Self::DateInner
Construct the date from an ISO date
fn date_to_iso(&self, date: &Self::DateInner) -> Date<Iso>
fn date_to_iso(&self, date: &Self::DateInner) -> Date<Iso>
Obtain an ISO date from this date
fn months_in_year(&self, date: &Self::DateInner) -> u8
fn months_in_year(&self, date: &Self::DateInner) -> u8
Count the number of months in a given year, specified by providing a date from that year
fn days_in_year(&self, date: &Self::DateInner) -> u32
fn days_in_year(&self, date: &Self::DateInner) -> u32
Count the number of days in a given year, specified by providing a date from that year
fn days_in_month(&self, date: &Self::DateInner) -> u8
fn days_in_month(&self, date: &Self::DateInner) -> u8
Count the number of days in a given month, specified by providing a date from that year/month
fn debug_name(&self) -> &'static str
fn debug_name(&self) -> &'static str
Obtain a name for the calendar for debug printing
fn year(&self, date: &Self::DateInner) -> FormattableYear
fn year(&self, date: &Self::DateInner) -> FormattableYear
The calendar-specific year represented by date
fn month(&self, date: &Self::DateInner) -> FormattableMonth
fn month(&self, date: &Self::DateInner) -> FormattableMonth
The calendar-specific month represented by date
fn day_of_month(&self, date: &Self::DateInner) -> DayOfMonth
fn day_of_month(&self, date: &Self::DateInner) -> DayOfMonth
The calendar-specific day-of-month represented by date
fn day_of_year_info(&self, date: &Self::DateInner) -> DayOfYearInfo
fn day_of_year_info(&self, date: &Self::DateInner) -> DayOfYearInfo
Information of the day of the year
Provided methods
fn day_of_week(&self, date: &Self::DateInner) -> IsoWeekday
fn day_of_week(&self, date: &Self::DateInner) -> IsoWeekday
Calculate the day of the week and return it
fn any_calendar_kind(&self) -> Option<AnyCalendarKind>
fn any_calendar_kind(&self) -> Option<AnyCalendarKind>
The AnyCalendarKind
corresponding to this calendar,
if one exists. Implementors outside of icu_calendar should return None