Struct UtcDateTime
#[repr(transparent)]
pub struct UtcDateTime { /* private fields */ }
A PlainDateTime that is known to be UTC.
UtcDateTime is guaranteed to be ABI-compatible with PlainDateTime, meaning that
transmuting from one to the other will not result in undefined behavior.
Implementations
impl UtcDateTime
const UNIX_EPOCH: Self = _;Midnight, 1 January, 1970.
# use UtcDateTime; # use utc_datetime; assert_eq!;const MIN: Self = _;The smallest value that can be represented by
UtcDateTime.Depending on
large-datesfeature flag, value of this constant may vary.- With
large-datesdisabled it is equal to-9999-01-01 00:00:00.0 - With
large-datesenabled it is equal to-999999-01-01 00:00:00.0
# use UtcDateTime; # use utc_datetime; // Assuming `large-dates` feature is disabled. assert_eq!;- With
const MAX: Self = _;The largest value that can be represented by
UtcDateTime.Depending on
large-datesfeature flag, value of this constant may vary.- With
large-datesdisabled it is equal to9999-12-31 23:59:59.999_999_999 - With
large-datesenabled it is equal to999999-12-31 23:59:59.999_999_999
# use UtcDateTime; # use utc_datetime; // Assuming `large-dates` feature is disabled. assert_eq!;- With
fn now() -> SelfCreate a new
UtcDateTimewith the current date and time.# use UtcDateTime; assert!;const fn new(date: Date, time: Time) -> SelfCreate a new
UtcDateTimefrom the providedDateandTime.# use UtcDateTime; # use ; assert_eq!;const fn from_unix_timestamp(timestamp: i64) -> Result<Self, ComponentRange>Create a
UtcDateTimefrom the provided Unix timestamp.# use UtcDateTime; # use utc_datetime; assert_eq!; assert_eq!;If you have a timestamp-nanosecond pair, you can use something along the lines of the following:
# use ; let = ; assert_eq!; # Ok::const fn from_unix_timestamp_nanos(timestamp: i128) -> Result<Self, ComponentRange>Construct an
UtcDateTimefrom the provided Unix timestamp (in nanoseconds).# use UtcDateTime; # use utc_datetime; assert_eq!; assert_eq!;const fn to_offset(self, offset: UtcOffset) -> OffsetDateTimeConvert the
UtcDateTimefrom UTC to the providedUtcOffset, returning anOffsetDateTime.# use ; assert_eq!; // Construct midnight on new year's, UTC. let utc = utc_datetime!; let new_york = utc.to_offset; let los_angeles = utc.to_offset; assert_eq!; assert_eq!; assert_eq!;Panics
This method panics if the local date-time in the new offset is outside the supported range.
const fn checked_to_offset(self, offset: UtcOffset) -> Option<OffsetDateTime>Convert the
UtcDateTimefrom UTC to the providedUtcOffset, returning anOffsetDateTime.Noneis returned if the date-time in the resulting offset is invalid.# use UtcDateTime; # use ; assert_eq!; assert_eq!;const fn unix_timestamp(self) -> i64Get the Unix timestamp.
# use utc_datetime; assert_eq!; assert_eq!;const fn unix_timestamp_nanos(self) -> i128Get the Unix timestamp in nanoseconds.
use utc_datetime; assert_eq!; assert_eq!;const fn date(self) -> DateGet the
Datecomponent of theUtcDateTime.# use ; assert_eq!;const fn time(self) -> TimeGet the
Timecomponent of theUtcDateTime.# use ; assert_eq!;const fn year(self) -> i32Get the year of the date.
# use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn month(self) -> MonthGet the month of the date.
# use Month; # use utc_datetime; assert_eq!; assert_eq!;const fn day(self) -> u8Get the day of the date.
The returned value will always be in the range
1..=31.# use utc_datetime; assert_eq!; assert_eq!;const fn ordinal(self) -> u16Get the day of the year.
The returned value will always be in the range
1..=366(1..=365for common years).# use utc_datetime; assert_eq!; assert_eq!;const fn iso_week(self) -> u8Get the ISO week number.
The returned value will always be in the range
1..=53.# use utc_datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn sunday_based_week(self) -> u8Get the week number where week 1 begins on the first Sunday.
The returned value will always be in the range
0..=53.# use utc_datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn monday_based_week(self) -> u8Get the week number where week 1 begins on the first Monday.
The returned value will always be in the range
0..=53.# use utc_datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn to_calendar_date(self) -> (i32, Month, u8)Get the year, month, and day.
# use Month; # use utc_datetime; assert_eq!;const fn to_ordinal_date(self) -> (i32, u16)Get the year and ordinal day number.
# use utc_datetime; assert_eq!;const fn to_iso_week_date(self) -> (i32, u8, Weekday)Get the ISO 8601 year, week number, and weekday.
# use *; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn weekday(self) -> WeekdayGet the weekday.
# use *; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn to_julian_day(self) -> i32Get the Julian day for the date. The time is not taken into account for this calculation.
# use utc_datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn as_hms(self) -> (u8, u8, u8)Get the clock hour, minute, and second.
# use utc_datetime; assert_eq!; assert_eq!;const fn as_hms_milli(self) -> (u8, u8, u8, u16)Get the clock hour, minute, second, and millisecond.
# use utc_datetime; assert_eq!; assert_eq!;const fn as_hms_micro(self) -> (u8, u8, u8, u32)Get the clock hour, minute, second, and microsecond.
# use utc_datetime; assert_eq!; assert_eq!;const fn as_hms_nano(self) -> (u8, u8, u8, u32)Get the clock hour, minute, second, and nanosecond.
# use utc_datetime; assert_eq!; assert_eq!;const fn hour(self) -> u8Get the clock hour.
The returned value will always be in the range
0..24.# use utc_datetime; assert_eq!; assert_eq!;const fn minute(self) -> u8Get the minute within the hour.
The returned value will always be in the range
0..60.# use utc_datetime; assert_eq!; assert_eq!;const fn second(self) -> u8Get the second within the minute.
The returned value will always be in the range
0..60.# use utc_datetime; assert_eq!; assert_eq!;const fn millisecond(self) -> u16Get the milliseconds within the second.
The returned value will always be in the range
0..1_000.# use utc_datetime; assert_eq!; assert_eq!;const fn microsecond(self) -> u32Get the microseconds within the second.
The returned value will always be in the range
0..1_000_000.# use utc_datetime; assert_eq!; assert_eq!;const fn nanosecond(self) -> u32Get the nanoseconds within the second.
The returned value will always be in the range
0..1_000_000_000.# use utc_datetime; assert_eq!; assert_eq!;const fn checked_add(self, duration: SignedDuration) -> Option<Self>Computes
self + duration, returningNoneif an overflow occurred.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn checked_sub(self, duration: SignedDuration) -> Option<Self>Computes
self - duration, returningNoneif an overflow occurred.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn saturating_add(self, duration: SignedDuration) -> SelfComputes
self + duration, saturating value on overflow.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn saturating_sub(self, duration: SignedDuration) -> SelfComputes
self - duration, saturating value on overflow.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;
impl UtcDateTime
const fn replace_time(self, time: Time) -> SelfReplace the time, preserving the date.
# use ; assert_eq!;const fn replace_date(self, date: Date) -> SelfReplace the date, preserving the time.
# use ; assert_eq!;const fn replace_year(self, year: i32) -> Result<Self, ComponentRange>Replace the year. The month and day will be unchanged.
# use utc_datetime; assert_eq!; assert!; // -1_000_000_000 isn't a valid year assert!; // 1_000_000_000 isn't a valid yearconst fn replace_month(self, month: Month) -> Result<Self, ComponentRange>Replace the month of the year.
# use utc_datetime; # use Month; assert_eq!; assert!; // 30 isn't a valid day in Februaryconst fn replace_day(self, day: u8) -> Result<Self, ComponentRange>Replace the day of the month.
# use utc_datetime; assert_eq!; assert!; // 00 isn't a valid day assert!; // 30 isn't a valid day in Februaryconst fn replace_ordinal(self, ordinal: u16) -> Result<Self, ComponentRange>Replace the day of the year.
# use utc_datetime; assert_eq!; assert!; // 0 isn't a valid ordinal assert!; // 2022 isn't a leap yearconst fn truncate_to_day(self) -> SelfTruncate to the start of the day, setting the time to midnight.
# use utc_datetime; assert_eq!;const fn replace_hour(self, hour: u8) -> Result<Self, ComponentRange>Replace the clock hour.
# use utc_datetime; assert_eq!; assert!; // 24 isn't a valid hourconst fn truncate_to_hour(self) -> SelfTruncate to the hour, setting the minute, second, and subsecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_minute(self, minute: u8) -> Result<Self, ComponentRange>Replace the minutes within the hour.
# use utc_datetime; assert_eq!; assert!; // 60 isn't a valid minuteconst fn truncate_to_minute(self) -> SelfTruncate to the minute, setting the second and subsecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_second(self, second: u8) -> Result<Self, ComponentRange>Replace the seconds within the minute.
# use utc_datetime; assert_eq!; assert!; // 60 isn't a valid secondconst fn truncate_to_second(self) -> SelfTruncate to the second, setting the subsecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_millisecond(self, millisecond: u16) -> Result<Self, ComponentRange>Replace the milliseconds within the second.
# use utc_datetime; assert_eq!; assert!; // 1_000 isn't a valid millisecondconst fn truncate_to_millisecond(self) -> SelfTruncate to the millisecond, setting the microsecond and nanosecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_microsecond(self, microsecond: u32) -> Result<Self, ComponentRange>Replace the microseconds within the second.
# use utc_datetime; assert_eq!; assert!; // 1_000_000 isn't a valid microsecondconst fn truncate_to_microsecond(self) -> SelfTruncate to the microsecond, setting the nanosecond component to zero.
# use utc_datetime; assert_eq!;const fn replace_nanosecond(self, nanosecond: u32) -> Result<Self, ComponentRange>Replace the nanoseconds within the second.
# use utc_datetime; assert_eq!; assert!; // 1_000_000_000 isn't a valid nanosecond
Trait Implementations
impl Add<Duration> for UtcDateTime
type Output = UtcDateTime;fn add(self, duration: StdDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Add<SignedDuration> for UtcDateTime
type Output = UtcDateTime;fn add(self, duration: SignedDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl AddAssign<Duration> for UtcDateTime
fn add_assign(&mut self, rhs: StdDuration)Panics
This may panic if an overflow occurs.
impl AddAssign<SignedDuration> for UtcDateTime
fn add_assign(&mut self, rhs: SignedDuration)Panics
This may panic if an overflow occurs.
impl Clone for UtcDateTime
fn clone(&self) -> UtcDateTime
impl Copy for UtcDateTime
impl Debug for UtcDateTime
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Display for UtcDateTime
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Eq for UtcDateTime
impl From<OffsetDateTime> for UtcDateTime
fn from(datetime: OffsetDateTime) -> SelfPanics
This may panic if an overflow occurs.
impl From<SystemTime> for UtcDateTime
fn from(system_time: SystemTime) -> Self
impl From<Timestamp> for UtcDateTime
fn from(timestamp: Timestamp) -> Self
impl Hash for UtcDateTime
fn hash<__H: Hasher>(&self, state: &mut __H)
impl Ord for UtcDateTime
fn cmp(&self, other: &UtcDateTime) -> Ordering
impl PartialEq for UtcDateTime
fn eq(&self, other: &UtcDateTime) -> bool
impl PartialEq<OffsetDateTime> for UtcDateTime
fn eq(&self, other: &OffsetDateTime) -> bool
impl PartialEq<SystemTime> for UtcDateTime
fn eq(&self, rhs: &SystemTime) -> bool
impl PartialEq<Timestamp> for UtcDateTime
fn eq(&self, other: &Timestamp) -> bool
impl PartialOrd for UtcDateTime
fn partial_cmp(&self, other: &UtcDateTime) -> Option<Ordering>
impl PartialOrd<OffsetDateTime> for UtcDateTime
fn partial_cmp(&self, other: &OffsetDateTime) -> Option<Ordering>
impl PartialOrd<SystemTime> for UtcDateTime
fn partial_cmp(&self, other: &SystemTime) -> Option<Ordering>
impl PartialOrd<Timestamp> for UtcDateTime
fn partial_cmp(&self, other: &Timestamp) -> Option<Ordering>
impl SmartDisplay for UtcDateTime
type Metadata = ();fn metadata(&self, f: FormatterOptions) -> Metadata<'_, Self>fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl StructuralPartialEq for UtcDateTime
impl Sub for UtcDateTime
type Output = SignedDuration;fn sub(self, rhs: Self) -> Self::Output
impl Sub<Duration> for UtcDateTime
type Output = UtcDateTime;fn sub(self, duration: StdDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<OffsetDateTime> for UtcDateTime
type Output = SignedDuration;fn sub(self, rhs: OffsetDateTime) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<SignedDuration> for UtcDateTime
type Output = UtcDateTime;fn sub(self, rhs: SignedDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<SystemTime> for UtcDateTime
type Output = SignedDuration;fn sub(self, rhs: SystemTime) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<Timestamp> for UtcDateTime
type Output = SignedDuration;fn sub(self, rhs: Timestamp) -> Self::Output
impl SubAssign<Duration> for UtcDateTime
fn sub_assign(&mut self, rhs: StdDuration)Panics
This may panic if an overflow occurs.
impl SubAssign<SignedDuration> for UtcDateTime
fn sub_assign(&mut self, rhs: SignedDuration)Panics
This may panic if an overflow occurs.
Auto Trait Implementations
impl Freeze for UtcDateTime
impl RefUnwindSafe for UtcDateTime
impl Send for UtcDateTime
impl Sync for UtcDateTime
impl Unpin for UtcDateTime
impl UnsafeUnpin for UtcDateTime
impl UnwindSafe for UtcDateTime
Blanket Implementations
impl<T> Any for UtcDateTime
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for UtcDateTime
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for UtcDateTime
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for UtcDateTime
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for UtcDateTime
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for UtcDateTime
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T> ToString for UtcDateTime
where
T: Display + ?Sized,
fn to_string(&self) -> String
impl<T, U> Into<U> for UtcDateTime
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for UtcDateTime
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for UtcDateTime
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>