Julian

Struct Julian 

Source
pub struct Julian;
Expand description

The Julian Calendar.

The Julian calendar is a solar calendar that was introduced in the Roman Republic under Julius Caesar in 45 BCE, and used in Europe and much of the western world until it was eventually replaced by the more accurate Gregorian calendar.

This implementation extends proleptically for dates before the calendar’s creation.

While no country uses the Julian calendar as its civil calendar today, it is still used by eastern Christian churches to determine lithurgical dates like Christmas and Easter.

§Era codes

This calendar uses two era codes: bce (alias bc), and ce (alias ad), corresponding to the BCE and CE eras.

§Months and days

The 12 months are called January (M01, 31 days), February (M02, 28 days), March (M03, 31 days), April (M04, 30 days), May (M05, 31 days), June (M06, 30 days), July (M07, 31 days), August (M08, 31 days), September (M09, 30 days), October (M10, 31 days), November (M11, 30 days), December (M12, 31 days).

In leap years (years divisible by 4), February gains a 29th day.

Standard years thus have 365 days, and leap years 366.

§Calendar drift

The Julian calendar has an average year length of 365.25, slightly longer than the mean solar year, so this calendar drifts 1 day in ~128 years with respect to the seasons. This significant drift was the reason for its replacement by the Gregorian calendar. The Julian calendar is currently 14 days ahead of the Gregorian calendar and the solar year.

§Historical accuracy

Historically, a variety of year reckoning schemes have been used with the Julian calendar, such as Roman consular years, regnal years, indictions, Anno Mundi, the Diocletian era, Anno Domini, and the (equivalent) Common era. The latter, which is used today and by this implementation, has been used by western European authorities since the early middle ages, however some eastern European countries/churches have not adopted it until fairly recently, or, in some cases, are still using a different year reckoning scheme.

Also during the middle ages, some countries used different dates for the first day of the year, ranging from late December to late March. Care has to be taken when interpreting year numbers with dates in this range.

The calendar was used incorrectly for a while after adoption, so the first year where the months align with this proleptic implementation is probably 4 CE.

Implementations§

Source§

impl Julian

Source

pub fn new() -> Julian

Construct a new Julian Calendar

Source

pub fn easter(year: i32) -> Date<Julian>

Returns the date of (Orthodox) Easter in the given year.

Trait Implementations§

Source§

impl Calendar for Julian

Source§

fn year_info( &self, date: &<Julian as Calendar>::DateInner, ) -> <Julian as Calendar>::Year

The calendar-specific year represented by date Julian has the same era scheme as Gregorian

Source§

fn month(&self, date: &<Julian as Calendar>::DateInner) -> MonthInfo

The calendar-specific month represented by date

Source§

fn day_of_month(&self, date: &<Julian as Calendar>::DateInner) -> DayOfMonth

The calendar-specific day-of-month represented by date

Source§

type DateInner = JulianDateInner

The internal type used to represent dates Read more
Source§

type Year = EraYear

The type of YearInfo returned by the date
Source§

type DifferenceError = Infallible

The type of error returned by until
Source§

fn from_codes( &self, era: Option<&str>, year: i32, month_code: MonthCode, day: u8, ) -> Result<<Julian as Calendar>::DateInner, DateError>

Construct a date from era/month codes and fields Read more
Source§

fn from_rata_die(&self, rd: RataDie) -> <Julian as Calendar>::DateInner

Construct the date from a RataDie
Source§

fn to_rata_die(&self, date: &<Julian as Calendar>::DateInner) -> RataDie

Obtain a RataDie from this date
Source§

fn has_cheap_iso_conversion(&self) -> bool

Whether from_iso/to_iso is more efficient than from_rata_die/to_rata_die.
Source§

fn months_in_year(&self, date: &<Julian as Calendar>::DateInner) -> u8

Count the number of months in a given year, specified by providing a date from that year
Source§

fn days_in_year(&self, date: &<Julian as Calendar>::DateInner) -> u16

Count the number of days in a given year, specified by providing a date from that year
Source§

fn days_in_month(&self, date: &<Julian as Calendar>::DateInner) -> u8

Count the number of days in a given month, specified by providing a date from that year/month
Source§

fn is_in_leap_year(&self, date: &<Julian as Calendar>::DateInner) -> bool

Calculate if a date is in a leap year
Source§

fn day_of_year(&self, date: &<Julian as Calendar>::DateInner) -> DayOfYear

Information of the day of the year
Source§

fn debug_name(&self) -> &'static str

Obtain a name for the calendar for debug printing
Source§

fn calendar_algorithm(&self) -> Option<CalendarAlgorithm>

Returns the CalendarAlgorithm that is required to match when parsing into this calendar. Read more
Source§

fn from_iso(&self, iso: IsoDateInner) -> Self::DateInner

Construct the date from an ISO date. Read more
Source§

fn to_iso(&self, date: &Self::DateInner) -> IsoDateInner

Obtain an ISO date from this date. Read more
Source§

fn extended_year(&self, date: &Self::DateInner) -> i32

Source§

impl Clone for Julian

Source§

fn clone(&self) -> Julian

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Julian

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Julian

Source§

fn default() -> Julian

Returns the “default value” for a type. Read more
Source§

impl Hash for Julian

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Julian

Source§

fn cmp(&self, other: &Julian) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Julian

Source§

fn eq(&self, other: &Julian) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Julian

Source§

fn partial_cmp(&self, other: &Julian) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for Julian

Source§

impl Eq for Julian

Source§

impl StructuralPartialEq for Julian

Auto Trait Implementations§

§

impl Freeze for Julian

§

impl RefUnwindSafe for Julian

§

impl Send for Julian

§

impl Sync for Julian

§

impl Unpin for Julian

§

impl UnwindSafe for Julian

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<C> AsCalendar for C
where C: Calendar,

Source§

type Calendar = C

The calendar being wrapped
Source§

fn as_calendar(&self) -> &C

Obtain the inner calendar
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ErasedDestructor for T
where T: 'static,