jiff::span

Struct RelativeCivil

Source
struct RelativeCivil {
    datetime: DateTime,
    timestamp: Timestamp,
}
Expand description

A wrapper around a civil datetime and a timestamp corresponding to that civil datetime in UTC.

Haphazardly interpreting a civil datetime in UTC is an odd and usually incorrect thing to do. But the way we use it here is basically just to give it an “anchoring” point such that we can represent it using a single integer for rounding purposes. It is only used in a context relative to another civil datetime interpreted in UTC. In this fashion, the selection of UTC specifically doesn’t really matter. We could use any time zone. (Although, it must be a time zone without any transitions, otherwise we could wind up with time zone aware results in a context where that would be unexpected since this is civil time.)

Fields§

§datetime: DateTime§timestamp: Timestamp

Implementations§

Source§

impl RelativeCivil

Source

fn new(datetime: DateTime) -> Result<RelativeCivil, Error>

Creates a new relative wrapper around the given civil datetime.

This wrapper bundles a timestamp for the given datetime by interpreting it as being in UTC. This is an “odd” thing to do, but it’s only used in the context of determining the length of time between two civil datetimes. So technically, any time zone without transitions could be used.

§Errors

This returns an error if the datetime could not be converted to a timestamp. This only occurs near the minimum and maximum civil datetime values.

Source

fn checked_add(&self, span: Span) -> Result<RelativeCivil, Error>

Returns the result of DateTime::checked_add.

§Errors

Returns an error in the same cases as DateTime::checked_add. That is, when adding the span to this zoned datetime would overflow.

This also returns an error if the resulting datetime could not be converted to a timestamp in UTC. This only occurs near the minimum and maximum datetime values.

Source

fn checked_add_duration( &self, duration: SignedDuration, ) -> Result<RelativeCivil, Error>

Returns the result of DateTime::checked_add with an absolute duration.

§Errors

Returns an error in the same cases as DateTime::checked_add. That is, when adding the span to this zoned datetime would overflow.

This also returns an error if the resulting datetime could not be converted to a timestamp in UTC. This only occurs near the minimum and maximum datetime values.

Source

fn until(&self, largest: Unit, other: &RelativeCivil) -> Result<Span, Error>

Returns the result of DateTime::until.

§Errors

Returns an error in the same cases as DateTime::until. That is, when the span for the given largest unit cannot be represented. This can generally only happen when largest is Unit::Nanosecond and the span cannot be represented as a 64-bit integer of nanoseconds.

Trait Implementations§

Source§

impl Clone for RelativeCivil

Source§

fn clone(&self) -> RelativeCivil

Returns a copy 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 RelativeCivil

Source§

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

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

impl Copy for RelativeCivil

Auto Trait Implementations§

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<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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> 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.