pub struct TimeTime { /* private fields */ }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 Times, they are assumed to be in the same calendar
date.
Implementations
sourceimpl Time
impl Time
sourcepub const fn midnight() -> Time
pub const fn midnight() -> Time
Create a Time that is exactly midnight.
assert_eq!(Time::midnight(), time!(0:00));sourcepub const fn try_from_hms(
hour: u8,
minute: u8,
second: u8
) -> Result<Time, ComponentRange>
pub const fn try_from_hms(
hour: u8,
minute: u8,
second: u8
) -> Result<Time, ComponentRange>
Attempt to create a Time from the hour, minute, and second.
assert!(Time::try_from_hms(1, 2, 3).is_ok());Returns None if any component is not valid.
assert!(Time::try_from_hms(24, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::try_from_hms(0, 60, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::try_from_hms(0, 0, 60).is_err()); // 60 isn't a valid second.This function is const fn when using rustc >= 1.46.
sourcepub const fn try_from_hms_milli(
hour: u8,
minute: u8,
second: u8,
millisecond: u16
) -> Result<Time, ComponentRange>
pub const fn try_from_hms_milli(
hour: u8,
minute: u8,
second: u8,
millisecond: u16
) -> Result<Time, ComponentRange>
Attempt to create a Time from the hour, minute, second, and millisecond.
assert!(Time::try_from_hms_milli(1, 2, 3, 4).is_ok());Returns None if any component is not valid.
assert!(Time::try_from_hms_milli(24, 0, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::try_from_hms_milli(0, 60, 0, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::try_from_hms_milli(0, 0, 60, 0).is_err()); // 60 isn't a valid second.
assert!(Time::try_from_hms_milli(0, 0, 0, 1_000).is_err()); // 1_000 isn't a valid millisecond.This function is const fn when using rustc >= 1.46.
sourcepub const fn try_from_hms_micro(
hour: u8,
minute: u8,
second: u8,
microsecond: u32
) -> Result<Time, ComponentRange>
pub const fn try_from_hms_micro(
hour: u8,
minute: u8,
second: u8,
microsecond: u32
) -> Result<Time, ComponentRange>
Attempt to create a Time from the hour, minute, second, and microsecond.
assert!(Time::try_from_hms_micro(1, 2, 3, 4).is_ok());Returns None if any component is not valid.
assert!(Time::try_from_hms_micro(24, 0, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::try_from_hms_micro(0, 60, 0, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::try_from_hms_micro(0, 0, 60, 0).is_err()); // 60 isn't a valid second.
assert!(Time::try_from_hms_micro(0, 0, 0, 1_000_000).is_err()); // 1_000_000 isn't a valid microsecond.This function is const fn when using rustc >= 1.46.
sourcepub const fn try_from_hms_nano(
hour: u8,
minute: u8,
second: u8,
nanosecond: u32
) -> Result<Time, ComponentRange>
pub const fn try_from_hms_nano(
hour: u8,
minute: u8,
second: u8,
nanosecond: u32
) -> Result<Time, ComponentRange>
Attempt to create a Time from the hour, minute, second, and nanosecond.
assert!(Time::try_from_hms_nano(1, 2, 3, 4).is_ok());Returns None if any component is not valid.
assert!(Time::try_from_hms_nano(24, 0, 0, 0).is_err()); // 24 isn't a valid hour.
assert!(Time::try_from_hms_nano(0, 60, 0, 0).is_err()); // 60 isn't a valid minute.
assert!(Time::try_from_hms_nano(0, 0, 60, 0).is_err()); // 60 isn't a valid second.
assert!(Time::try_from_hms_nano(0, 0, 0, 1_000_000_000).is_err()); // 1_000_000_000 isn't a valid nanosecond.This function is const fn when using rustc >= 1.46.
sourcepub fn now() -> Time
👎 Deprecated since 0.2.7: This method returns a value that assumes an offset of UTC.
pub fn now() -> Time
This method returns a value that assumes an offset of UTC.
Create a Time representing the current time (UTC).
println!("{:?}", Time::now());sourcepub const fn hour(self) -> u8
pub const fn hour(self) -> u8
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);sourcepub const fn minute(self) -> u8
pub const fn minute(self) -> u8
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);sourcepub const fn second(self) -> u8
pub const fn second(self) -> u8
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);sourcepub const fn millisecond(self) -> u16
pub const fn millisecond(self) -> u16
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);sourcepub const fn microsecond(self) -> u32
pub const fn microsecond(self) -> u32
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);sourcepub const fn nanosecond(self) -> u32
pub const fn nanosecond(self) -> u32
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);sourceimpl Time
impl Time
Methods that allow formatting the Time.
sourcepub fn format(self, format: impl AsRef<str>) -> String
pub fn format(self, format: impl AsRef<str>) -> String
Format the Time using the provided string.
assert_eq!(time!(0:00).format("%r"), "12:00:00 am");sourcepub fn lazy_format(self, format: impl AsRef<str>) -> impl Display
pub fn lazy_format(self, format: impl AsRef<str>) -> impl Display
Format the Time using the provided string.
assert_eq!(time!(0:00).lazy_format("%r").to_string(), "12:00:00 am");sourcepub fn parse(s: impl AsRef<str>, format: impl AsRef<str>) -> Result<Time, Error>
pub fn parse(s: impl AsRef<str>, format: impl AsRef<str>) -> Result<Time, Error>
Attempt to parse a Time using the provided string.
assert_eq!(
Time::parse("0:00:00", "%T"),
Ok(time!(0:00))
);
assert_eq!(
Time::parse("23:59:59", "%T"),
Ok(time!(23:59:59))
);
assert_eq!(
Time::parse("12:00:00 am", "%r"),
Ok(time!(0:00))
);
assert_eq!(
Time::parse("12:00:00 pm", "%r"),
Ok(time!(12:00))
);
assert_eq!(
Time::parse("11:59:59 pm", "%r"),
Ok(time!(23:59:59))
);Trait Implementations
sourceimpl Add<Duration> for Time
impl Add<Duration> for Time
sourceimpl Add<Duration> for Time
impl Add<Duration> for Time
sourceimpl AddAssign<Duration> for Time
impl AddAssign<Duration> for Time
sourcefn add_assign(&mut self, duration: Duration)
fn add_assign(&mut self, duration: Duration)
Add the sub-day time of the std::time::Duration to the existing
Time. Wraps on overflow.
let mut time = time!(12:00);
time += 2.std_hours();
assert_eq!(time, time!(14:00));
let mut time = time!(23:59:59);
time += 2.std_seconds();
assert_eq!(time, time!(0:00:01));sourceimpl AddAssign<Duration> for Time
impl AddAssign<Duration> for Time
sourcefn add_assign(&mut self, duration: Duration)
fn add_assign(&mut self, duration: Duration)
Add the sub-day time of the Duration to the existing Time. Wraps on
overflow.
let mut time = time!(12:00);
time += 2.hours();
assert_eq!(time, time!(14:00));
let mut time = time!(0:00:01);
time += (-2).seconds();
assert_eq!(time, time!(23:59:59));impl<'r> Decode<'r, MySql> for Time
impl<'r> Decode<'r, MySql> for Time
impl<'r> Decode<'r, Postgres> for Time
impl<'r> Decode<'r, Postgres> for Time
impl<'_> Encode<'_, MySql> for Time
impl<'_> Encode<'_, MySql> for Time
fn encode_by_ref(&self, buf: &mut Vec<u8, Global>) -> IsNull
fn encode_by_ref(&self, buf: &mut Vec<u8, Global>) -> IsNull
Writes the value of self into buf without moving self. Read more
fn size_hint(&self) -> usize
fn encode(self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer) -> IsNull
fn encode(self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer) -> IsNull
Writes the value of self into buf in the expected format for the database.
fn produces(&self) -> Option<<DB as Database>::TypeInfo>
impl<'_> Encode<'_, Postgres> for Time
impl<'_> Encode<'_, Postgres> for Time
fn encode_by_ref(&self, buf: &mut PgArgumentBuffer) -> IsNull
fn encode_by_ref(&self, buf: &mut PgArgumentBuffer) -> IsNull
Writes the value of self into buf without moving self. Read more
fn size_hint(&self) -> usize
fn encode(self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer) -> IsNull
fn encode(self, buf: &mut <DB as HasArguments<'q>>::ArgumentBuffer) -> IsNull
Writes the value of self into buf in the expected format for the database.
fn produces(&self) -> Option<<DB as Database>::TypeInfo>
sourceimpl Ord for Time
impl Ord for Time
sourceimpl PartialOrd<Time> for Time
impl PartialOrd<Time> for Time
sourcefn partial_cmp(&self, other: &Time) -> Option<Ordering>
fn partial_cmp(&self, other: &Time) -> Option<Ordering>
This method returns an ordering between self and other values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl PgHasArrayType for Time
impl PgHasArrayType for Time
fn array_type_info() -> PgTypeInfo
fn array_compatible(ty: &PgTypeInfo) -> bool
sourceimpl Sub<Duration> for Time
impl Sub<Duration> for Time
sourceimpl Sub<Duration> for Time
impl Sub<Duration> for Time
sourceimpl Sub<Time> for Time
impl Sub<Time> for Time
sourcefn sub(self, rhs: Time) -> <Time as Sub<Time>>::Output
fn sub(self, rhs: Time) -> <Time as Sub<Time>>::Output
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());sourceimpl SubAssign<Duration> for Time
impl SubAssign<Duration> for Time
sourcefn sub_assign(&mut self, duration: Duration)
fn sub_assign(&mut self, duration: Duration)
Subtract the sub-day time of the std::time::Duration from the existing
Time. Wraps on overflow.
let mut time = time!(14:00);
time -= 2.std_hours();
assert_eq!(time, time!(12:00));
let mut time = time!(0:00:01);
time -= 2.std_seconds();
assert_eq!(time, time!(23:59:59));sourceimpl SubAssign<Duration> for Time
impl SubAssign<Duration> for Time
sourcefn sub_assign(&mut self, duration: Duration)
fn sub_assign(&mut self, duration: Duration)
Subtract the sub-day time of the Duration from the existing Time.
Wraps on overflow.
let mut time = time!(14:00);
time -= 2.hours();
assert_eq!(time, time!(12:00));
let mut time = time!(23:59:59);
time -= (-2).seconds();
assert_eq!(time, time!(0:00:01));sourceimpl TryGetable for Time
impl TryGetable for Time
sourcefn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, TryGetError>
fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, TryGetError>
Ensure the type implements this method
impl Type<MySql> for Time
impl Type<MySql> for Time
fn compatible(ty: &<DB as Database>::TypeInfo) -> bool
fn compatible(ty: &<DB as Database>::TypeInfo) -> bool
Determines if this Rust type is compatible with the given SQL type. Read more
impl Type<Postgres> for Time
impl Type<Postgres> for Time
fn compatible(ty: &<DB as Database>::TypeInfo) -> bool
fn compatible(ty: &<DB as Database>::TypeInfo) -> bool
Determines if this Rust type is compatible with the given SQL type. Read more
sourceimpl ValueType for Time
impl ValueType for Time
fn try_from(v: Value) -> Result<Time, ValueTypeErr>
fn type_name() -> String
fn column_type() -> ColumnType
fn unwrap(v: Value) -> Self
impl Copy for Time
impl Eq for Time
impl StructuralEq for Time
impl StructuralPartialEq for Time
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key and return true if they are equal.
sourceimpl<V> FromValueTuple for V where
V: Into<Value> + ValueType,
impl<V> FromValueTuple for V where
V: Into<Value> + ValueType,
fn from_value_tuple<I>(i: I) -> V where
I: IntoValueTuple,
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<V> IntoValueTuple for V where
V: Into<Value>,
impl<V> IntoValueTuple for V where
V: Into<Value>,
fn into_value_tuple(self) -> ValueTuple
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into)Uses borrowed data to replace owned data, usually by cloning. Read more
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more