jiff::span

Enum Unit

Source
pub enum Unit {
    Year = 9,
    Month = 8,
    Week = 7,
    Day = 6,
    Hour = 5,
    Minute = 4,
    Second = 3,
    Millisecond = 2,
    Microsecond = 1,
    Nanosecond = 0,
}
Expand description

A way to refer to a single calendar or clock unit.

This type is principally used in APIs involving a Span, which is a duration of time. For example, routines like Zoned::until permit specifying the largest unit of the span returned:

use jiff::{Unit, Zoned};

let zdt1: Zoned = "2024-07-06 17:40-04[America/New_York]".parse()?;
let zdt2: Zoned = "2024-11-05 08:00-05[America/New_York]".parse()?;
let span = zdt1.until((Unit::Year, &zdt2))?;
assert_eq!(format!("{span:#}"), "3mo 29d 14h 20m");

But a Unit is also used in APIs for rounding datetimes themselves:

use jiff::{Unit, Zoned};

let zdt: Zoned = "2024-07-06 17:44:22.158-04[America/New_York]".parse()?;
let nearest_minute = zdt.round(Unit::Minute)?;
assert_eq!(
    nearest_minute.to_string(),
    "2024-07-06T17:44:00-04:00[America/New_York]",
);

§Example: ordering

This example demonstrates that Unit has an ordering defined such that bigger units compare greater than smaller units.

use jiff::Unit;

assert!(Unit::Year > Unit::Nanosecond);
assert!(Unit::Day > Unit::Hour);
assert!(Unit::Hour > Unit::Minute);
assert!(Unit::Hour > Unit::Minute);
assert_eq!(Unit::Hour, Unit::Hour);

Variants§

§

Year = 9

A Gregorian calendar year. It usually has 365 days for non-leap years, and 366 days for leap years.

§

Month = 8

A Gregorian calendar month. It usually has one of 28, 29, 30 or 31 days.

§

Week = 7

A week is 7 days that either begins on Sunday or Monday.

§

Day = 6

A day is usually 24 hours, but some days may have different lengths due to time zone transitions.

§

Hour = 5

An hour is always 60 minutes.

§

Minute = 4

A minute is always 60 seconds. (Jiff behaves as if leap seconds do not exist.)

§

Second = 3

A second is always 1,000 milliseconds.

§

Millisecond = 2

A millisecond is always 1,000 microseconds.

§

Microsecond = 1

A microsecond is always 1,000 nanoseconds.

§

Nanosecond = 0

A nanosecond is the smallest granularity of time supported by Jiff.

Implementations§

Source§

impl Unit

Source

pub(crate) fn next(&self) -> Option<Unit>

Returns the next biggest unit, if one exists.

Source

pub(crate) fn nanoseconds(self) -> ri128<{ i128::MIN }, { i128::MAX }>

Returns the number of nanoseconds in this unit as a 128-bit integer.

§Panics

When this unit is always variable. That is, years or months.

Source

fn is_variable(self) -> bool

Returns true when this unit is definitively variable.

In effect, this is any unit bigger than ‘day’, because any such unit can vary in time depending on its reference point. A ‘day’ can as well, but we sorta special case ‘day’ to mean ‘24 hours’ for cases where the user is dealing with civil time.

Source

pub(crate) fn singular(&self) -> &'static str

A human readable singular description of this unit of time.

Source

pub(crate) fn plural(&self) -> &'static str

A human readable plural description of this unit of time.

Source

pub(crate) fn compact(&self) -> &'static str

A very succinct label corresponding to this unit.

Source

fn from_usize(n: usize) -> Option<Unit>

The inverse of unit as usize.

Trait Implementations§

Source§

impl Clone for Unit

Source§

fn clone(&self) -> Unit

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 Unit

Source§

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

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

impl From<FractionalUnit> for Unit

Source§

fn from(u: FractionalUnit) -> Unit

Converts to this type from the input type.
Source§

impl From<Unit> for DateTimeRound

Source§

fn from(unit: Unit) -> DateTimeRound

Converts to this type from the input type.
Source§

impl From<Unit> for OffsetRound

Source§

fn from(unit: Unit) -> OffsetRound

Converts to this type from the input type.
Source§

impl From<Unit> for SignedDurationRound

Source§

fn from(unit: Unit) -> SignedDurationRound

Converts to this type from the input type.
Source§

impl From<Unit> for SpanRound<'static>

Source§

fn from(unit: Unit) -> SpanRound<'static>

Converts to this type from the input type.
Source§

impl From<Unit> for SpanTotal<'static>

Source§

fn from(unit: Unit) -> SpanTotal<'static>

Converts to this type from the input type.
Source§

impl From<Unit> for TimeRound

Source§

fn from(unit: Unit) -> TimeRound

Converts to this type from the input type.
Source§

impl From<Unit> for TimestampRound

Source§

fn from(unit: Unit) -> TimestampRound

Converts to this type from the input type.
Source§

impl From<Unit> for ZonedRound

Source§

fn from(unit: Unit) -> ZonedRound

Converts to this type from the input type.
Source§

impl Hash for Unit

Source§

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

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 Unit

Source§

fn cmp(&self, other: &Unit) -> 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 Unit

Source§

fn eq(&self, other: &Unit) -> 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 Unit

Source§

fn partial_cmp(&self, other: &Unit) -> 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 Unit

Source§

impl Eq for Unit

Source§

impl StructuralPartialEq for Unit

Auto Trait Implementations§

§

impl Freeze for Unit

§

impl RefUnwindSafe for Unit

§

impl Send for Unit

§

impl Sync for Unit

§

impl Unpin for Unit

§

impl UnwindSafe for Unit

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.