pub struct TimeTime { /* private fields */ }with-time only.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ยง
Sourceยงimpl Time
impl Time
Sourcepub const MIDNIGHT: Time
pub const MIDNIGHT: Time
A Time that is exactly midnight. This is the smallest possible value for a Time.
assert_eq!(Time::MIDNIGHT, time!(0:00));Sourcepub const MAX: Time
pub const MAX: Time
A Time that is one nanosecond before midnight. This is the largest possible value for a
Time.
assert_eq!(Time::MAX, time!(23:59:59.999_999_999));Sourcepub const fn from_hms(
hour: u8,
minute: u8,
second: u8,
) -> Result<Time, ComponentRange>
pub const fn from_hms( hour: u8, minute: u8, second: u8, ) -> Result<Time, ComponentRange>
Attempt to create a Time from the hour, minute, and second.
assert!(Time::from_hms(1, 2, 3).is_ok());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.Sourcepub const fn from_hms_milli(
hour: u8,
minute: u8,
second: u8,
millisecond: u16,
) -> Result<Time, ComponentRange>
pub const fn 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::from_hms_milli(1, 2, 3, 4).is_ok());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.Sourcepub const fn from_hms_micro(
hour: u8,
minute: u8,
second: u8,
microsecond: u32,
) -> Result<Time, ComponentRange>
pub const fn 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::from_hms_micro(1, 2, 3, 4).is_ok());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.Sourcepub const fn from_hms_nano(
hour: u8,
minute: u8,
second: u8,
nanosecond: u32,
) -> Result<Time, ComponentRange>
pub const fn 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::from_hms_nano(1, 2, 3, 4).is_ok());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.Sourcepub const fn as_hms(self) -> (u8, u8, u8)
pub const fn as_hms(self) -> (u8, u8, u8)
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));Sourcepub const fn as_hms_milli(self) -> (u8, u8, u8, u16)
pub const fn as_hms_milli(self) -> (u8, u8, u8, u16)
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));Sourcepub const fn as_hms_micro(self) -> (u8, u8, u8, u32)
pub const fn as_hms_micro(self) -> (u8, u8, u8, u32)
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)
);Sourcepub const fn as_hms_nano(self) -> (u8, u8, u8, u32)
pub const fn as_hms_nano(self) -> (u8, u8, u8, u32)
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)
);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);Sourcepub const fn duration_until(self, other: Time) -> Duration
pub const fn duration_until(self, other: Time) -> Duration
Determine the Duration that, if added to self, would result in the parameter.
assert_eq!(time!(18:00).duration_until(Time::MIDNIGHT), 6.hours());
assert_eq!(time!(23:00).duration_until(time!(1:00)), 2.hours());Sourcepub const fn duration_since(self, other: Time) -> Duration
pub const fn duration_since(self, other: Time) -> Duration
Determine the Duration that, if added to the parameter, would result in self.
assert_eq!(Time::MIDNIGHT.duration_since(time!(18:00)), 6.hours());
assert_eq!(time!(1:00).duration_since(time!(23:00)), 2.hours());Sourcepub const fn replace_hour(self, hour: u8) -> Result<Time, ComponentRange>
pub const fn replace_hour(self, hour: u8) -> Result<Time, ComponentRange>
Replace the clock hour.
assert_eq!(
time!(01:02:03.004_005_006).replace_hour(7),
Ok(time!(07:02:03.004_005_006))
);
assert!(time!(01:02:03.004_005_006).replace_hour(24).is_err()); // 24 isn't a valid hourSourcepub const fn replace_minute(self, minute: u8) -> Result<Time, ComponentRange>
pub const fn replace_minute(self, minute: u8) -> Result<Time, ComponentRange>
Replace the minutes within the hour.
assert_eq!(
time!(01:02:03.004_005_006).replace_minute(7),
Ok(time!(01:07:03.004_005_006))
);
assert!(time!(01:02:03.004_005_006).replace_minute(60).is_err()); // 60 isn't a valid minuteSourcepub const fn replace_second(self, second: u8) -> Result<Time, ComponentRange>
pub const fn replace_second(self, second: u8) -> Result<Time, ComponentRange>
Replace the seconds within the minute.
assert_eq!(
time!(01:02:03.004_005_006).replace_second(7),
Ok(time!(01:02:07.004_005_006))
);
assert!(time!(01:02:03.004_005_006).replace_second(60).is_err()); // 60 isn't a valid secondSourcepub const fn replace_millisecond(
self,
millisecond: u16,
) -> Result<Time, ComponentRange>
pub const fn replace_millisecond( self, millisecond: u16, ) -> Result<Time, ComponentRange>
Replace the milliseconds within the second.
assert_eq!(
time!(01:02:03.004_005_006).replace_millisecond(7),
Ok(time!(01:02:03.007))
);
assert!(time!(01:02:03.004_005_006)
.replace_millisecond(1_000)
.is_err()); // 1_000 isn't a valid millisecondSourcepub const fn replace_microsecond(
self,
microsecond: u32,
) -> Result<Time, ComponentRange>
pub const fn replace_microsecond( self, microsecond: u32, ) -> Result<Time, ComponentRange>
Replace the microseconds within the second.
assert_eq!(
time!(01:02:03.004_005_006).replace_microsecond(7_008),
Ok(time!(01:02:03.007_008))
);
assert!(time!(01:02:03.004_005_006)
.replace_microsecond(1_000_000)
.is_err()); // 1_000_000 isn't a valid microsecondSourcepub const fn replace_nanosecond(
self,
nanosecond: u32,
) -> Result<Time, ComponentRange>
pub const fn replace_nanosecond( self, nanosecond: u32, ) -> Result<Time, ComponentRange>
Replace the nanoseconds within the second.
assert_eq!(
time!(01:02:03.004_005_006).replace_nanosecond(7_008_009),
Ok(time!(01:02:03.007_008_009))
);
assert!(time!(01:02:03.004_005_006)
.replace_nanosecond(1_000_000_000)
.is_err()); // 1_000_000_000 isn't a valid nanosecondSourceยงimpl Time
impl Time
Sourcepub fn format_into(
self,
output: &mut (impl Write + ?Sized),
format: &(impl Formattable + ?Sized),
) -> Result<usize, Format>
Available on crate feature formatting only.
pub fn format_into( self, output: &mut (impl Write + ?Sized), format: &(impl Formattable + ?Sized), ) -> Result<usize, Format>
formatting only.Format the Time using the provided format description.
Sourcepub fn format(
self,
format: &(impl Formattable + ?Sized),
) -> Result<String, Format>
Available on crate feature formatting only.
pub fn format( self, format: &(impl Formattable + ?Sized), ) -> Result<String, Format>
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");Trait Implementationsยง
Sourceยงimpl Add<Duration> for Time
impl Add<Duration> for Time
Sourceยงimpl Add<Duration> for Time
impl Add<Duration> for Time
Sourceยงimpl AddAssign<Duration> for Time
impl AddAssign<Duration> for Time
Sourceยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSourceยงimpl AddAssign<Duration> for Time
impl AddAssign<Duration> for Time
Sourceยงfn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSourceยงimpl<'a> Deserialize<'a> for Time
impl<'a> Deserialize<'a> for Time
Sourceยงfn deserialize<D>(
deserializer: D,
) -> Result<Time, <D as Deserializer<'a>>::Error>where
D: Deserializer<'a>,
fn deserialize<D>(
deserializer: D,
) -> Result<Time, <D as Deserializer<'a>>::Error>where
D: Deserializer<'a>,
Sourceยงimpl IntoActiveValue<Time> for TimeTime
impl IntoActiveValue<Time> for TimeTime
Sourceยงfn into_active_value(self) -> ActiveValue<TimeTime>
fn into_active_value(self) -> ActiveValue<TimeTime>
Sourceยงimpl Ord for Time
impl Ord for Time
Sourceยงimpl PartialOrd for Time
impl PartialOrd for Time
Sourceยงimpl Serialize for Time
impl Serialize for Time
Sourceยงfn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Sourceยงimpl SmartDisplay for Time
impl SmartDisplay for Time
Sourceยงfn metadata(&self, _: FormatterOptions) -> Metadata<'_, Time>
fn metadata(&self, _: FormatterOptions) -> Metadata<'_, Time>
Sourceยงfn fmt_with_metadata(
&self,
f: &mut Formatter<'_>,
metadata: Metadata<'_, Time>,
) -> Result<(), Error>
fn fmt_with_metadata( &self, f: &mut Formatter<'_>, metadata: Metadata<'_, Time>, ) -> Result<(), Error>
Sourceยงimpl Sub<Duration> for Time
impl Sub<Duration> for Time
Sourceยงimpl Sub<Duration> for Time
impl Sub<Duration> for Time
Sourceยงimpl Sub for Time
impl Sub for Time
Sourceยงfn sub(self, rhs: Time) -> <Time as Sub>::Output
fn sub(self, rhs: Time) -> <Time as Sub>::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());Sourceยงimpl SubAssign<Duration> for Time
impl SubAssign<Duration> for Time
Sourceยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSourceยงimpl SubAssign<Duration> for Time
impl SubAssign<Duration> for Time
Sourceยงfn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSourceยงimpl TryFromU64 for Time
impl TryFromU64 for Time
Sourceยงimpl TryGetable for Time
impl TryGetable for Time
Sourceยงfn try_get_by<I: ColIdx>(res: &QueryResult, idx: I) -> Result<Self, TryGetError>
fn try_get_by<I: ColIdx>(res: &QueryResult, idx: I) -> Result<Self, TryGetError>
Sourceยงfn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, TryGetError>
fn try_get(res: &QueryResult, pre: &str, col: &str) -> Result<Self, TryGetError>
Sourceยงfn try_get_by_index(
res: &QueryResult,
index: usize,
) -> Result<Self, TryGetError>
fn try_get_by_index( res: &QueryResult, index: usize, ) -> Result<Self, TryGetError>
Sourceยงimpl ValueType for Time
impl ValueType for Time
fn try_from(v: Value) -> Result<Time, ValueTypeErr>
fn type_name() -> String
fn array_type() -> ArrayType
fn column_type() -> ColumnType
fn unwrap(v: Value) -> Self
fn expect(v: Value, msg: &str) -> Self
fn is_option() -> bool
fn enum_type_name() -> Option<&'static str>
impl Copy for Time
impl Eq for Time
impl NotU8 for Time
impl TimeLikeValue for Time
Auto Trait Implementationsยง
impl Freeze for Time
impl RefUnwindSafe for Time
impl Send for Time
impl Sync for Time
impl Unpin for Time
impl UnwindSafe for Time
Blanket Implementationsยง
Sourceยงimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Sourceยงimpl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Sourceยงimpl<T> ExprTrait for T
impl<T> ExprTrait for T
Sourceยงfn as_enum<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
fn as_enum<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
AS enum expression. Read moreSourceยงfn cast_as<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
fn cast_as<N>(self, type_name: N) -> Exprwhere
N: IntoIden,
CAST AS expression. Read moreSourceยงfn count_distinct(self) -> Expr
fn count_distinct(self) -> Expr
COUNT function with the DISTINCT modifier. Read moreSourceยงfn equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
fn equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
Sourceยงfn in_subquery(self, sel: SelectStatement) -> Expr
fn in_subquery(self, sel: SelectStatement) -> Expr
IN sub-query expression. Read moreSourceยงfn in_tuples<V, I>(self, v: I) -> Exprwhere
V: IntoValueTuple,
I: IntoIterator<Item = V>,
fn in_tuples<V, I>(self, v: I) -> Exprwhere
V: IntoValueTuple,
I: IntoIterator<Item = V>,
IN sub expression. Read moreSourceยงfn is_not_null(self) -> Expr
fn is_not_null(self) -> Expr
IS NOT NULL expression. Read moreSourceยงfn left_shift<R>(self, right: R) -> Expr
fn left_shift<R>(self, right: R) -> Expr
Sourceยงfn not_between<A, B>(self, a: A, b: B) -> Expr
fn not_between<A, B>(self, a: A, b: B) -> Expr
NOT BETWEEN expression. Read moreSourceยงfn not_equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
fn not_equals<C>(self, col: C) -> Exprwhere
C: IntoColumnRef,
Sourceยงfn not_in_subquery(self, sel: SelectStatement) -> Expr
fn not_in_subquery(self, sel: SelectStatement) -> Expr
NOT IN sub-query expression. Read moreSourceยงfn not_like<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
fn not_like<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
NOT LIKE expression. Read moreSourceยงfn right_shift<R>(self, right: R) -> Expr
fn right_shift<R>(self, right: R) -> Expr
Sourceยงimpl<V> FromValueTuple for V
impl<V> FromValueTuple for V
fn from_value_tuple<I>(i: I) -> Vwhere
I: IntoValueTuple,
Sourceยงimpl<T> Instrument for T
impl<T> Instrument for T
Sourceยงfn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Sourceยงfn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSourceยงimpl<T> IntoValueTuple for Twhere
T: Into<ValueTuple>,
impl<T> IntoValueTuple for Twhere
T: Into<ValueTuple>,
fn into_value_tuple(self) -> ValueTuple
Sourceยงimpl<T> PgExpr for Twhere
T: ExprTrait,
impl<T> PgExpr for Twhere
T: ExprTrait,
Sourceยงfn concatenate<T>(self, right: T) -> Expr
fn concatenate<T>(self, right: T) -> Expr
||) expression. Read moreSourceยงfn matches<T>(self, expr: T) -> Expr
fn matches<T>(self, expr: T) -> Expr
@@) expression. Read moreSourceยงfn contains<T>(self, expr: T) -> Expr
fn contains<T>(self, expr: T) -> Expr
@>) expression. Read moreSourceยงfn contained<T>(self, expr: T) -> Expr
fn contained<T>(self, expr: T) -> Expr
<@) expression. Read moreSourceยงfn ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
fn ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
ILIKE expression. Read moreSourceยงfn not_ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
fn not_ilike<L>(self, like: L) -> Exprwhere
L: IntoLikeExpr,
NOT ILIKE expressionSourceยงfn get_json_field<T>(self, right: T) -> Expr
fn get_json_field<T>(self, right: T) -> Expr
->). Read more