Struct time::Time[][src]

pub struct Time { /* fields omitted */ }

The clock time within a given date. Nanosecond precision.

All minutes are assumed to have exactly 60 seconds; no attempt is made to handle leap seconds (either positive or negative).

When comparing two Times, they are assumed to be in the same calendar date.

Implementations

impl Time[src]

pub const MIDNIGHT: Self[src]

Create a Time that is exactly midnight.

assert_eq!(Time::MIDNIGHT, time!("0:00"));
Run

pub const fn from_hms(
    hour: u8,
    minute: u8,
    second: u8
) -> Result<Self, ComponentRange>
[src]

Attempt to create a Time from the hour, minute, and second.

assert!(Time::from_hms(1, 2, 3).is_ok());
Run
assert!(Time::from_hms(24, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::from_hms(0, 60, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::from_hms(0, 0, 60).is_err()); // 60 isn't a valid second.
Run

pub const fn from_hms_milli(
    hour: u8,
    minute: u8,
    second: u8,
    millisecond: u16
) -> Result<Self, ComponentRange>
[src]

Attempt to create a Time from the hour, minute, second, and millisecond.

assert!(Time::from_hms_milli(1, 2, 3, 4).is_ok());
Run
assert!(Time::from_hms_milli(24, 0, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::from_hms_milli(0, 60, 0, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::from_hms_milli(0, 0, 60, 0).is_err()); // 60 isn't a valid second.
assert!(Time::from_hms_milli(0, 0, 0, 1_000).is_err()); // 1_000 isn't a valid millisecond.
Run

pub const fn from_hms_micro(
    hour: u8,
    minute: u8,
    second: u8,
    microsecond: u32
) -> Result<Self, ComponentRange>
[src]

Attempt to create a Time from the hour, minute, second, and microsecond.

assert!(Time::from_hms_micro(1, 2, 3, 4).is_ok());
Run
assert!(Time::from_hms_micro(24, 0, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::from_hms_micro(0, 60, 0, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::from_hms_micro(0, 0, 60, 0).is_err()); // 60 isn't a valid second.
assert!(Time::from_hms_micro(0, 0, 0, 1_000_000).is_err()); // 1_000_000 isn't a valid microsecond.
Run

pub const fn from_hms_nano(
    hour: u8,
    minute: u8,
    second: u8,
    nanosecond: u32
) -> Result<Self, ComponentRange>
[src]

Attempt to create a Time from the hour, minute, second, and nanosecond.

assert!(Time::from_hms_nano(1, 2, 3, 4).is_ok());
Run
assert!(Time::from_hms_nano(24, 0, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::from_hms_nano(0, 60, 0, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::from_hms_nano(0, 0, 60, 0).is_err()); // 60 isn't a valid second.
assert!(Time::from_hms_nano(0, 0, 0, 1_000_000_000).is_err()); // 1_000_000_000 isn't a valid nanosecond.
Run

pub const fn as_hms(self) -> (u8, u8, u8)[src]

Get the clock hour, minute, and second.

assert_eq!(time!("0:00:00").as_hms(), (0, 0, 0));
assert_eq!(time!("23:59:59").as_hms(), (23, 59, 59));
Run

pub const fn as_hms_milli(self) -> (u8, u8, u8, u16)[src]

Get the clock hour, minute, second, and millisecond.

assert_eq!(time!("0:00:00").as_hms_milli(), (0, 0, 0, 0));
assert_eq!(time!("23:59:59.999").as_hms_milli(), (23, 59, 59, 999));
Run

pub const fn as_hms_micro(self) -> (u8, u8, u8, u32)[src]

Get the clock hour, minute, second, and microsecond.

assert_eq!(time!("0:00:00").as_hms_micro(), (0, 0, 0, 0));
assert_eq!(
    time!("23:59:59.999_999").as_hms_micro(),
    (23, 59, 59, 999_999)
);
Run

pub const fn as_hms_nano(self) -> (u8, u8, u8, u32)[src]

Get the clock hour, minute, second, and nanosecond.

assert_eq!(time!("0:00:00").as_hms_nano(), (0, 0, 0, 0));
assert_eq!(
    time!("23:59:59.999_999_999").as_hms_nano(),
    (23, 59, 59, 999_999_999)
);
Run

pub const fn hour(self) -> u8[src]

Get the clock hour.

The returned value will always be in the range 0..24.

assert_eq!(time!("0:00:00").hour(), 0);
assert_eq!(time!("23:59:59").hour(), 23);
Run

pub const fn minute(self) -> u8[src]

Get the minute within the hour.

The returned value will always be in the range 0..60.

assert_eq!(time!("0:00:00").minute(), 0);
assert_eq!(time!("23:59:59").minute(), 59);
Run

pub const fn second(self) -> u8[src]

Get the second within the minute.

The returned value will always be in the range 0..60.

assert_eq!(time!("0:00:00").second(), 0);
assert_eq!(time!("23:59:59").second(), 59);
Run

pub const fn millisecond(self) -> u16[src]

Get the milliseconds within the second.

The returned value will always be in the range 0..1_000.

assert_eq!(time!("0:00").millisecond(), 0);
assert_eq!(time!("23:59:59.999").millisecond(), 999);
Run

pub const fn microsecond(self) -> u32[src]

Get the microseconds within the second.

The returned value will always be in the range 0..1_000_000.

assert_eq!(time!("0:00").microsecond(), 0);
assert_eq!(time!("23:59:59.999_999").microsecond(), 999_999);
Run

pub const fn nanosecond(self) -> u32[src]

Get the nanoseconds within the second.

The returned value will always be in the range 0..1_000_000_000.

assert_eq!(time!("0:00").nanosecond(), 0);
assert_eq!(time!("23:59:59.999_999_999").nanosecond(), 999_999_999);
Run

impl Time[src]

pub fn format_into(
    self,
    output: &mut impl Write,
    format: &impl Formattable
) -> Result<usize, Format>
[src]

This is supported on crate feature formatting only.

Format the Time using the provided format description. The formatted value will be output to the provided writer. The format description will typically be parsed by using format_description::parse.

pub fn format(self, format: &impl Formattable) -> Result<String, Format>[src]

This is supported on crate feature formatting only.

Format the Time using the provided format description. The format description will typically be parsed by using format_description::parse.

let format = format_description::parse("[hour]:[minute]:[second]")?;
assert_eq!(time!("12:00").format(&format)?, "12:00:00");
Run

impl Time[src]

pub fn parse(input: &str, description: &impl Parsable) -> Result<Self, Parse>[src]

This is supported on crate feature parsing only.

Parse a Time from the input using the provided format description. The format description will typically be parsed by using format_description::parse.

let format = format_description::parse("[hour]:[minute]:[second]")?;
assert_eq!(Time::parse("12:00:00", &format)?, time!("12:00"));
Run

Trait Implementations

impl Add<Duration> for Time[src]

type Output = Self

The resulting type after applying the + operator.

fn add(self, duration: Duration) -> Self::Output[src]

Add the sub-day time of the Duration to the Time. Wraps on overflow.

assert_eq!(time!("12:00") + 2.hours(), time!("14:00"));
assert_eq!(time!("0:00:01") + (-2).seconds(), time!("23:59:59"));
Run

impl Add<Duration> for Time[src]

type Output = Self

The resulting type after applying the + operator.

fn add(self, duration: StdDuration) -> Self::Output[src]

Add the sub-day time of the std::time::Duration to the Time. Wraps on overflow.

assert_eq!(time!("12:00") + 2.std_hours(), time!("14:00"));
assert_eq!(time!("23:59:59") + 2.std_seconds(), time!("0:00:01"));
Run

impl<T> AddAssign<T> for Time where
    Self: Add<T, Output = Self>, 
[src]

impl Arbitrary for Time[src]

This is supported on crate feature quickcheck only.

impl Clone for Time[src]

impl Copy for Time[src]

impl Debug for Time[src]

impl<'a> Deserialize<'a> for Time[src]

This is supported on crate feature serde only.

impl Display for Time[src]

This is supported on crate feature formatting only.

impl Eq for Time[src]

impl Hash for Time[src]

impl Ord for Time[src]

impl PartialEq<Time> for Time[src]

impl PartialOrd<Time> for Time[src]

impl Serialize for Time[src]

This is supported on crate feature serde only.

impl StructuralEq for Time[src]

impl StructuralPartialEq for Time[src]

impl Sub<Duration> for Time[src]

type Output = Self

The resulting type after applying the - operator.

fn sub(self, duration: Duration) -> Self::Output[src]

Subtract the sub-day time of the Duration from the Time. Wraps on overflow.

assert_eq!(time!("14:00") - 2.hours(), time!("12:00"));
assert_eq!(time!("23:59:59") - (-2).seconds(), time!("0:00:01"));
Run

impl Sub<Duration> for Time[src]

type Output = Self

The resulting type after applying the - operator.

fn sub(self, duration: StdDuration) -> Self::Output[src]

Subtract the sub-day time of the std::time::Duration from the Time. Wraps on overflow.

assert_eq!(time!("14:00") - 2.std_hours(), time!("12:00"));
assert_eq!(time!("0:00:01") - 2.std_seconds(), time!("23:59:59"));
Run

impl Sub<Time> for Time[src]

type Output = Duration

The resulting type after applying the - operator.

fn sub(self, rhs: Self) -> Self::Output[src]

Subtract two Times, returning the Duration between. This assumes both Times are in the same calendar day.

assert_eq!(time!("0:00") - time!("0:00"), 0.seconds());
assert_eq!(time!("1:00") - time!("0:00"), 1.hours());
assert_eq!(time!("0:00") - time!("1:00"), (-1).hours());
assert_eq!(time!("0:00") - time!("23:00"), (-23).hours());
Run

impl<T> SubAssign<T> for Time where
    Self: Sub<T, Output = Self>, 
[src]

impl TryFrom<Parsed> for Time[src]

This is supported on crate feature parsing only.

type Error = TryFromParsed

The type returned in the event of a conversion error.

Auto Trait Implementations

impl RefUnwindSafe for Time

impl Send for Time

impl Sync for Time

impl Unpin for Time

impl UnwindSafe for Time

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.