pub struct DateTime {
pub year: i32,
pub month: i32,
pub day: i32,
pub hours: i32,
pub minutes: i32,
pub seconds: i32,
pub nanos: i32,
pub time_offset: Option<TimeOffset>,
}
datetime
only.Expand description
Represents civil time (or occasionally physical time).
This type can represent a civil time in one of a few possible ways:
- When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC.
- When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone.
- When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time.
The date is relative to the Proleptic Gregorian Calendar.
If year is 0, the DateTime is considered not to have a specific year. month and day must have valid, non-zero values.
This type may also be used to represent a physical time if all the date and
time fields are set and either case of the time_offset
oneof is set.
Consider using Timestamp
message for physical time instead. If your use
case also would like to store the user’s timezone, that can be done in
another field.
This type is more flexible than some applications may want. Make sure to document and validate your application’s limitations.
Fields§
§year: i32
Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
month: i32
Required. Month of year. Must be from 1 to 12.
day: i32
Required. Day of month. Must be from 1 to 31 and valid for the year and month.
hours: i32
Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value “24:00:00” for scenarios like business closing time.
minutes: i32
Required. Minutes of hour of day. Must be from 0 to 59.
seconds: i32
Required. Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
nanos: i32
Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
time_offset: Option<TimeOffset>
Optional. Specifies either the UTC offset or the time zone of the DateTime. Choose carefully between them, considering that time zone data may change in the future (for example, a country modifies their DST start/end dates, and future DateTimes in the affected range had already been stored). If omitted, the DateTime is considered to be in local time.
Implementations§
Source§impl DateTime
impl DateTime
Sourcepub fn validate(&self) -> Result<(), DateTimeError>
pub fn validate(&self) -> Result<(), DateTimeError>
Checks if this DateTime
instance represents a valid date and time, and returns the related error if it does not.
Sourcepub fn is_valid(&self) -> bool
pub fn is_valid(&self) -> bool
Checks if this DateTime
instance represents a valid date and time.
Sourcepub fn has_year(&self) -> bool
pub fn has_year(&self) -> bool
Returns true
if the DateTime
has a specific year (i.e., year
is not 0).
Sourcepub fn has_utc_offset(&self) -> bool
pub fn has_utc_offset(&self) -> bool
Returns true if the TimeOffset
is a UtcOffset.
Sourcepub fn has_timezone(&self) -> bool
pub fn has_timezone(&self) -> bool
Returns true if the TimeOffset
is a TimeZone.
Sourcepub fn is_local(&self) -> bool
pub fn is_local(&self) -> bool
Returns true if the TimeOffset
is None.
Sourcepub fn with_utc_offset(self, offset: Duration) -> Self
pub fn with_utc_offset(self, offset: Duration) -> Self
Sets the time_offset
to a UTC offset Duration
, clearing any existing time zone.
Sourcepub fn with_time_zone(self, time_zone: TimeZone) -> Self
pub fn with_time_zone(self, time_zone: TimeZone) -> Self
Sets the time_offset
to a TimeZone
, clearing any existing UTC offset.
Sourcepub fn to_datetime_utc(self) -> Result<DateTime<Utc>, DateTimeError>
Available on crate feature chrono
only.
pub fn to_datetime_utc(self) -> Result<DateTime<Utc>, DateTimeError>
chrono
only.Converts this DateTime
to chrono::DateTime
TimeOffset
is a UtcOffset with 0 seconds and nanos.
Sourcepub fn to_fixed_offset_datetime(
self,
) -> Result<DateTime<FixedOffset>, DateTimeError>
Available on crate feature chrono
only.
pub fn to_fixed_offset_datetime( self, ) -> Result<DateTime<FixedOffset>, DateTimeError>
chrono
only.Converts this DateTime
to chrono::DateTime
<FixedOffset
>.
It succeeds if the TimeOffset
is a UtcOffset that results in an unambiguous FixedOffset
.
Sourcepub fn to_datetime_with_tz(self) -> Result<DateTime<Tz>, DateTimeError>
Available on crate features chrono
and chrono-tz
only.
pub fn to_datetime_with_tz(self) -> Result<DateTime<Tz>, DateTimeError>
chrono
and chrono-tz
only.Converts this DateTime
to chrono::DateTime
<Tz
>.
It succeeds if the TimeOffset
is a TimeZone
that maps to a valid Tz
or if the TimeOffset
is a UtcOffset with 0 seconds and nanos.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for DateTime
Available on crate feature serde
only.
impl<'de> Deserialize<'de> for DateTime
serde
only.Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl From<NaiveDateTime> for DateTime
Available on crate feature chrono
only.
impl From<NaiveDateTime> for DateTime
chrono
only.Source§fn from(ndt: NaiveDateTime) -> Self
fn from(ndt: NaiveDateTime) -> Self
Source§impl Message for DateTime
impl Message for DateTime
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl PartialOrd for DateTime
impl PartialOrd for DateTime
Source§impl TryFrom<DateTime> for DateTime<Tz>
Available on crate features chrono
and chrono-tz
only.
impl TryFrom<DateTime> for DateTime<Tz>
chrono
and chrono-tz
only.Source§impl TryFrom<DateTime> for NaiveDateTime
Available on crate feature chrono
only.
impl TryFrom<DateTime> for NaiveDateTime
chrono
only.impl Eq for DateTime
impl StructuralPartialEq for DateTime
Auto Trait Implementations§
impl Freeze for DateTime
impl RefUnwindSafe for DateTime
impl Send for DateTime
impl Sync for DateTime
impl Unpin for DateTime
impl UnwindSafe for DateTime
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T> AnyExt for T
impl<T> AnyExt for T
Source§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T
behind referenceSource§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T
behind mutable referenceSource§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T
behind Rc
pointerSource§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T
behind Arc
pointerSource§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle
.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other
into Self
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T
.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters
when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self
into C
, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self
into T
, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors
fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains
the unclamped color. Read more