pub struct Persian;Expand description
The Persian Calendar
The Persian Calendar is a solar calendar used officially by the countries of Iran and Afghanistan and many Persian-speaking regions.
This implementation extends proleptically for dates before the calendar’s creation in 458 AP (1079 CE).
This corresponds to the "persian" CLDR calendar.
§Era codes
This calendar uses a single era code ap, with Anno Persico/Anno Persarum starting the year of the Hijra. Dates before this era use negative years.
§Months and days
The 12 months are called Farvardin (M01, 31 days), Ordibehesht (M02, 31 days),
Khordad (M03, 31 days), Tir (M04, 31 days), Mordad (M05, 31 days), Shahrivar (M06, 31 days),
Mehr (M07, 30 days), Aban (M08, 30 days), Azar (M09, 30 days),
Dey (M10, 30 days), Bahman (M11, 30 days), Esfand (M12, 29 days).
In leap years (determined astronomically with respect to the vernal equinox), Esfand gains a 30th day.
Standard years thus have 365 days, and leap years 366.
§Calendar drift
As leap years are determined with respect to the solar year, this calendar stays anchored to the seasons.
Implementations§
Trait Implementations§
Source§impl Calendar for Persian
impl Calendar for Persian
Source§type DifferenceError = Infallible
type DifferenceError = Infallible
untilSource§fn from_codes(
&self,
era: Option<&str>,
year: i32,
month_code: MonthCode,
day: u8,
) -> Result<<Persian as Calendar>::DateInner, DateError>
fn from_codes( &self, era: Option<&str>, year: i32, month_code: MonthCode, day: u8, ) -> Result<<Persian as Calendar>::DateInner, DateError>
Source§fn from_rata_die(&self, rd: RataDie) -> <Persian as Calendar>::DateInner
fn from_rata_die(&self, rd: RataDie) -> <Persian as Calendar>::DateInner
RataDieSource§fn to_rata_die(&self, date: &<Persian as Calendar>::DateInner) -> RataDie
fn to_rata_die(&self, date: &<Persian as Calendar>::DateInner) -> RataDie
RataDie from this dateSource§fn has_cheap_iso_conversion(&self) -> bool
fn has_cheap_iso_conversion(&self) -> bool
from_iso/to_iso is more efficient
than from_rata_die/to_rata_die.Source§fn months_in_year(&self, date: &<Persian as Calendar>::DateInner) -> u8
fn months_in_year(&self, date: &<Persian as Calendar>::DateInner) -> u8
Source§fn days_in_year(&self, date: &<Persian as Calendar>::DateInner) -> u16
fn days_in_year(&self, date: &<Persian as Calendar>::DateInner) -> u16
Source§fn days_in_month(&self, date: &<Persian as Calendar>::DateInner) -> u8
fn days_in_month(&self, date: &<Persian as Calendar>::DateInner) -> u8
Source§fn year_info(
&self,
date: &<Persian as Calendar>::DateInner,
) -> <Persian as Calendar>::Year
fn year_info( &self, date: &<Persian as Calendar>::DateInner, ) -> <Persian as Calendar>::Year
Source§fn is_in_leap_year(&self, date: &<Persian as Calendar>::DateInner) -> bool
fn is_in_leap_year(&self, date: &<Persian as Calendar>::DateInner) -> bool
Source§fn month(&self, date: &<Persian as Calendar>::DateInner) -> MonthInfo
fn month(&self, date: &<Persian as Calendar>::DateInner) -> MonthInfo
dateSource§fn day_of_month(&self, date: &<Persian as Calendar>::DateInner) -> DayOfMonth
fn day_of_month(&self, date: &<Persian as Calendar>::DateInner) -> DayOfMonth
dateSource§fn day_of_year(&self, date: &<Persian as Calendar>::DateInner) -> DayOfYear
fn day_of_year(&self, date: &<Persian as Calendar>::DateInner) -> DayOfYear
Source§fn debug_name(&self) -> &'static str
fn debug_name(&self) -> &'static str
Source§fn calendar_algorithm(&self) -> Option<CalendarAlgorithm>
fn calendar_algorithm(&self) -> Option<CalendarAlgorithm>
CalendarAlgorithm that is required to match
when parsing into this calendar. Read moreSource§fn from_iso(&self, iso: IsoDateInner) -> Self::DateInner
fn from_iso(&self, iso: IsoDateInner) -> Self::DateInner
Source§fn to_iso(&self, date: &Self::DateInner) -> IsoDateInner
fn to_iso(&self, date: &Self::DateInner) -> IsoDateInner
Source§fn extended_year(&self, date: &Self::DateInner) -> i32
fn extended_year(&self, date: &Self::DateInner) -> i32
Source§impl CldrCalendar for Persian
impl CldrCalendar for Persian
Source§type YearNamesV1 = DatetimeNamesYearPersianV1
type YearNamesV1 = DatetimeNamesYearPersianV1
Source§type MonthNamesV1 = DatetimeNamesMonthPersianV1
type MonthNamesV1 = DatetimeNamesMonthPersianV1
Source§type SkeletaV1 = DatetimePatternsDatePersianV1
type SkeletaV1 = DatetimePatternsDatePersianV1
Source§impl From<Persian> for AnyCalendar
impl From<Persian> for AnyCalendar
Source§fn from(value: Persian) -> AnyCalendar
fn from(value: Persian) -> AnyCalendar
Source§impl IntoAnyCalendar for Persian
impl IntoAnyCalendar for Persian
Source§fn to_any(self) -> AnyCalendar
fn to_any(self) -> AnyCalendar
AnyCalendar, moving it Read moreSource§fn kind(&self) -> AnyCalendarKind
fn kind(&self) -> AnyCalendarKind
AnyCalendarKind enum variant associated with this calendarSource§fn from_any(any: AnyCalendar) -> Result<Persian, AnyCalendar>
fn from_any(any: AnyCalendar) -> Result<Persian, AnyCalendar>
Source§fn from_any_ref(any: &AnyCalendar) -> Option<&Persian>
fn from_any_ref(any: &AnyCalendar) -> Option<&Persian>
Source§impl Ord for Persian
impl Ord for Persian
Source§impl PartialOrd for Persian
impl PartialOrd for Persian
impl Copy for Persian
impl Eq for Persian
impl IntoFormattableAnyCalendar for Persian
impl StructuralPartialEq for Persian
impl UnstableSealed for Persian
Auto Trait Implementations§
impl Freeze for Persian
impl RefUnwindSafe for Persian
impl Send for Persian
impl Sync for Persian
impl Unpin for Persian
impl UnwindSafe for Persian
Blanket Implementations§
Source§impl<C> AsCalendar for Cwhere
C: Calendar,
impl<C> AsCalendar for Cwhere
C: Calendar,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> GetField<T> for Twhere
T: Copy + UnstableSealed,
impl<T> GetField<T> for Twhere
T: Copy + UnstableSealed,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more