Struct time::Time [−][src]
pub struct Time { /* fields omitted */ }
Expand description
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 Time
s, they are assumed to be in the same calendar date.
Implementations
Create a Time
that is exactly midnight.
assert_eq!(Time::MIDNIGHT, time!(0:00));
RunAttempt to create a Time
from the hour, minute, and second.
assert!(Time::from_hms(1, 2, 3).is_ok());
Runassert!(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.
Runpub const fn from_hms_milli(
hour: u8,
minute: u8,
second: u8,
millisecond: u16
) -> Result<Self, ComponentRange>
pub const fn from_hms_milli(
hour: u8,
minute: u8,
second: u8,
millisecond: u16
) -> Result<Self, ComponentRange>
Attempt to create a Time
from the hour, minute, second, and millisecond.
assert!(Time::from_hms_milli(1, 2, 3, 4).is_ok());
Runassert!(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.
Runpub const fn from_hms_micro(
hour: u8,
minute: u8,
second: u8,
microsecond: u32
) -> Result<Self, ComponentRange>
pub const fn from_hms_micro(
hour: u8,
minute: u8,
second: u8,
microsecond: u32
) -> Result<Self, ComponentRange>
Attempt to create a Time
from the hour, minute, second, and microsecond.
assert!(Time::from_hms_micro(1, 2, 3, 4).is_ok());
Runassert!(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.
Runpub const fn from_hms_nano(
hour: u8,
minute: u8,
second: u8,
nanosecond: u32
) -> Result<Self, ComponentRange>
pub const fn from_hms_nano(
hour: u8,
minute: u8,
second: u8,
nanosecond: u32
) -> Result<Self, ComponentRange>
Attempt to create a Time
from the hour, minute, second, and nanosecond.
assert!(Time::from_hms_nano(1, 2, 3, 4).is_ok());
Runassert!(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.
RunGet 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));
RunGet 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));
RunGet 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)
);
RunGet 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)
);
RunGet 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);
RunGet 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);
RunGet 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);
RunGet 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);
RunGet 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);
RunGet 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);
Runpub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
This is supported on crate feature formatting
only.
pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
formatting
only.Format the Time
using the provided format description.
This is supported on crate feature formatting
only.
formatting
only.Format the Time
using the provided format description.
let format = format_description::parse("[hour]:[minute]:[second]")?;
assert_eq!(time!(12:00).format(&format)?, "12:00:00");
RunThis is supported on crate feature parsing
only.
parsing
only.Parse a Time
from the input using the provided format
description.
let format = format_description::parse("[hour]:[minute]:[second]")?;
assert_eq!(Time::parse("12:00:00", &format)?, time!(12:00));
RunTrait Implementations
type Output = Self
type Output = Self
The resulting type after applying the +
operator.
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));
Runtype Output = Self
type Output = Self
The resulting type after applying the +
operator.
Performs the +=
operation. Read more
Performs the +=
operation. Read more
Deserialize this value from the given Serde deserializer. Read more
Generate a random value of T
, using rng
as the source of randomness.
Create an iterator that generates random values of T
, using rng
as
the source of randomness. Read more
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
type Output = Self
type Output = Self
The resulting type after applying the -
operator.
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));
Runtype Output = Self
type Output = Self
The resulting type after applying the -
operator.
Subtract two Time
s, returning the Duration
between. This assumes both Time
s 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());
RunPerforms the -=
operation. Read more
Performs the -=
operation. Read more
Auto Trait Implementations
impl RefUnwindSafe for Time
impl UnwindSafe for Time
Blanket Implementations
Mutably borrows from an owned value. Read more