Struct UtcDateTime
struct UtcDateTime { ... }
A PrimitiveDateTime that is known to be UTC.
UtcDateTime is guaranteed to be ABI-compatible with PrimitiveDateTime, meaning that
transmuting from one to the other will not result in undefined behavior.
Implementations
impl UtcDateTime
const fn replace_time(self: Self, time: Time) -> SelfReplace the time, preserving the date.
# use ; assert_eq!;const fn replace_date(self: Self, date: Date) -> SelfReplace the date, preserving the time.
# use ; assert_eq!;const fn replace_year(self: 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: 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: 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: 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: Self) -> SelfTruncate to the start of the day, setting the time to midnight.
# use utc_datetime; assert_eq!;const fn replace_hour(self: 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: Self) -> SelfTruncate to the hour, setting the minute, second, and subsecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_minute(self: Self, sunday_based_week: 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: Self) -> SelfTruncate to the minute, setting the second and subsecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_second(self: Self, monday_based_week: 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: Self) -> SelfTruncate to the second, setting the subsecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_millisecond(self: 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: Self) -> SelfTruncate to the millisecond, setting the microsecond and nanosecond components to zero.
# use utc_datetime; assert_eq!;const fn replace_microsecond(self: 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: Self) -> SelfTruncate to the microsecond, setting the nanosecond component to zero.
# use utc_datetime; assert_eq!;const fn replace_nanosecond(self: 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
impl UtcDateTime
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: 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: 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: Self) -> i64Get the Unix timestamp.
# use utc_datetime; assert_eq!; assert_eq!;const fn unix_timestamp_nanos(self: Self) -> i128Get the Unix timestamp in nanoseconds.
use utc_datetime; assert_eq!; assert_eq!;const fn date(self: Self) -> DateGet the
Datecomponent of theUtcDateTime.# use ; assert_eq!;const fn time(self: Self) -> TimeGet the
Timecomponent of theUtcDateTime.# use ; assert_eq!;const fn year(self: Self) -> i32Get the year of the date.
# use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn month(self: Self) -> MonthGet the month of the date.
# use Month; # use utc_datetime; assert_eq!; assert_eq!;const fn day(self: 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: 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: 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: 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: 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: Self) -> (i32, Month, u8)Get the year, month, and day.
# use Month; # use utc_datetime; assert_eq!;const fn to_ordinal_date(self: Self) -> (i32, u16)Get the year and ordinal day number.
# use utc_datetime; assert_eq!;const fn to_iso_week_date(self: 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: 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: 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: Self) -> (u8, u8, u8)Get the clock hour, minute, and second.
# use utc_datetime; assert_eq!; assert_eq!;const fn as_hms_milli(self: 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: 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: Self) -> (u8, u8, u8, u32)Get the clock hour, minute, second, and nanosecond.
# use utc_datetime; assert_eq!; assert_eq!;const fn hour(self: 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: 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: 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: 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: 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: 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: Self, duration: Duration) -> Option<Self>Computes
self + duration, returningNoneif an overflow occurred.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn checked_sub(self: Self, duration: Duration) -> Option<Self>Computes
self - duration, returningNoneif an overflow occurred.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn saturating_add(self: Self, duration: Duration) -> SelfComputes
self + duration, saturating value on overflow.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;const fn saturating_sub(self: Self, duration: Duration) -> SelfComputes
self - duration, saturating value on overflow.# use ; # use utc_datetime; assert_eq!; assert_eq!; assert_eq!;
impl Add for UtcDateTime
fn add(self: Self, duration: StdDuration) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl Add for UtcDateTime
fn add(self: Self, duration: Duration) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl AddAssign for UtcDateTime
fn add_assign(self: &mut Self, rhs: StdDuration)Panics
This may panic if an overflow occurs.
impl AddAssign for UtcDateTime
fn add_assign(self: &mut Self, rhs: Duration)Panics
This may panic if an overflow occurs.
impl Clone for UtcDateTime
fn clone(self: &Self) -> UtcDateTime
impl Copy for UtcDateTime
impl Debug for UtcDateTime
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Display for UtcDateTime
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Eq for UtcDateTime
impl Freeze for UtcDateTime
impl From for UtcDateTime
fn from(system_time: SystemTime) -> Self
impl From for UtcDateTime
fn from(datetime: OffsetDateTime) -> SelfPanics
This may panic if an overflow occurs.
impl Hash for UtcDateTime
fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H)
impl Ord for UtcDateTime
fn cmp(self: &Self, other: &UtcDateTime) -> Ordering
impl PartialEq for UtcDateTime
fn eq(self: &Self, rhs: &SystemTime) -> bool
impl PartialEq for UtcDateTime
fn eq(self: &Self, other: &OffsetDateTime) -> bool
impl PartialEq for UtcDateTime
fn eq(self: &Self, other: &UtcDateTime) -> bool
impl PartialOrd for UtcDateTime
fn partial_cmp(self: &Self, other: &UtcDateTime) -> Option<Ordering>
impl PartialOrd for UtcDateTime
fn partial_cmp(self: &Self, other: &OffsetDateTime) -> Option<Ordering>
impl PartialOrd for UtcDateTime
fn partial_cmp(self: &Self, other: &SystemTime) -> Option<Ordering>
impl RefUnwindSafe for UtcDateTime
impl Send for UtcDateTime
impl SmartDisplay for UtcDateTime
fn metadata(self: &Self, _: FormatterOptions) -> Metadata<'_, Self>fn fmt_with_metadata(self: &Self, f: &mut Formatter<'_>, metadata: Metadata<'_, Self>) -> Result
impl StructuralPartialEq for UtcDateTime
impl Sub for UtcDateTime
fn sub(self: Self, rhs: OffsetDateTime) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl Sub for UtcDateTime
fn sub(self: Self, duration: StdDuration) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl Sub for UtcDateTime
fn sub(self: Self, rhs: Duration) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl Sub for UtcDateTime
fn sub(self: Self, rhs: Self) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl Sub for UtcDateTime
fn sub(self: Self, rhs: SystemTime) -> <Self as >::OutputPanics
This may panic if an overflow occurs.
impl SubAssign for UtcDateTime
fn sub_assign(self: &mut Self, rhs: StdDuration)Panics
This may panic if an overflow occurs.
impl SubAssign for UtcDateTime
fn sub_assign(self: &mut Self, rhs: Duration)Panics
This may panic if an overflow occurs.
impl Sync for UtcDateTime
impl Unpin for UtcDateTime
impl UnsafeUnpin for UtcDateTime
impl UnwindSafe for UtcDateTime
impl<T> Any for UtcDateTime
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for UtcDateTime
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for UtcDateTime
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for UtcDateTime
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for UtcDateTime
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for UtcDateTime
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T> ToString for UtcDateTime
fn to_string(self: &Self) -> String
impl<T, U> Into for UtcDateTime
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for UtcDateTime
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for UtcDateTime
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>