pub struct UtcDateTime { /* private fields */ }Expand description
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§
Source§impl UtcDateTime
impl UtcDateTime
Sourcepub const UNIX_EPOCH: Self
pub const UNIX_EPOCH: Self
Sourcepub const MIN: Self
pub const MIN: Self
The smallest value that can be represented by UtcDateTime.
Depending on large-dates feature 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
Sourcepub const MAX: Self
pub const MAX: Self
The largest value that can be represented by UtcDateTime.
Depending on large-dates feature 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
Sourcepub const fn from_unix_timestamp(timestamp: i64) -> Result<Self, ComponentRange>
pub const fn from_unix_timestamp(timestamp: i64) -> Result<Self, ComponentRange>
Create a UtcDateTime from the provided Unix timestamp.
assert_eq!(
UtcDateTime::from_unix_timestamp(0),
Ok(UtcDateTime::UNIX_EPOCH),
);
assert_eq!(
UtcDateTime::from_unix_timestamp(1_546_300_800),
Ok(utc_datetime!(2019-01-01 0:00)),
);If you have a timestamp-nanosecond pair, you can use something along the lines of the following:
Sourcepub const fn from_unix_timestamp_nanos(
timestamp: i128,
) -> Result<Self, ComponentRange>
pub const fn from_unix_timestamp_nanos( timestamp: i128, ) -> Result<Self, ComponentRange>
Sourcepub const fn to_offset(self, offset: UtcOffset) -> OffsetDateTime
pub const fn to_offset(self, offset: UtcOffset) -> OffsetDateTime
Convert the UtcDateTime from UTC to the provided UtcOffset, returning an
OffsetDateTime.
assert_eq!(
utc_datetime!(2000-01-01 0:00)
.to_offset(offset!(-1))
.year(),
1999,
);
// Construct midnight on new year's, UTC.
let utc = utc_datetime!(2000-01-01 0:00);
let new_york = utc.to_offset(offset!(-5));
let los_angeles = utc.to_offset(offset!(-8));
assert_eq!(utc.hour(), 0);
assert_eq!(new_york.hour(), 19);
assert_eq!(los_angeles.hour(), 16);§Panics
This method panics if the local date-time in the new offset is outside the supported range.
Sourcepub const fn checked_to_offset(
self,
offset: UtcOffset,
) -> Option<OffsetDateTime>
pub const fn checked_to_offset( self, offset: UtcOffset, ) -> Option<OffsetDateTime>
Convert the UtcDateTime from UTC to the provided UtcOffset, returning an
OffsetDateTime. None is returned if the date-time in the resulting offset is
invalid.
Sourcepub const fn unix_timestamp(self) -> i64
pub const fn unix_timestamp(self) -> i64
Get the Unix timestamp.
Sourcepub const fn unix_timestamp_nanos(self) -> i128
pub const fn unix_timestamp_nanos(self) -> i128
Sourcepub const fn iso_week(self) -> u8
pub const fn iso_week(self) -> u8
Get the ISO week number.
The returned value will always be in the range 1..=53.
Sourcepub const fn sunday_based_week(self) -> u8
pub const fn sunday_based_week(self) -> u8
Get the week number where week 1 begins on the first Sunday.
The returned value will always be in the range 0..=53.
Sourcepub const fn monday_based_week(self) -> u8
pub const fn monday_based_week(self) -> u8
Get the week number where week 1 begins on the first Monday.
The returned value will always be in the range 0..=53.
Sourcepub const fn to_calendar_date(self) -> (i32, Month, u8)
pub const fn to_calendar_date(self) -> (i32, Month, u8)
Sourcepub const fn to_ordinal_date(self) -> (i32, u16)
pub const fn to_ordinal_date(self) -> (i32, u16)
Sourcepub const fn to_iso_week_date(self) -> (i32, u8, Weekday)
pub const fn to_iso_week_date(self) -> (i32, u8, Weekday)
Get the ISO 8601 year, week number, and weekday.
assert_eq!(
utc_datetime!(2019-01-01 0:00).to_iso_week_date(),
(2019, 1, Tuesday)
);
assert_eq!(
utc_datetime!(2019-10-04 0:00).to_iso_week_date(),
(2019, 40, Friday)
);
assert_eq!(
utc_datetime!(2020-01-01 0:00).to_iso_week_date(),
(2020, 1, Wednesday)
);
assert_eq!(
utc_datetime!(2020-12-31 0:00).to_iso_week_date(),
(2020, 53, Thursday)
);
assert_eq!(
utc_datetime!(2021-01-01 0:00).to_iso_week_date(),
(2020, 53, Friday)
);Sourcepub const fn weekday(self) -> Weekday
pub const fn weekday(self) -> Weekday
Get the weekday.
assert_eq!(utc_datetime!(2019-01-01 0:00).weekday(), Tuesday);
assert_eq!(utc_datetime!(2019-02-01 0:00).weekday(), Friday);
assert_eq!(utc_datetime!(2019-03-01 0:00).weekday(), Friday);
assert_eq!(utc_datetime!(2019-04-01 0:00).weekday(), Monday);
assert_eq!(utc_datetime!(2019-05-01 0:00).weekday(), Wednesday);
assert_eq!(utc_datetime!(2019-06-01 0:00).weekday(), Saturday);
assert_eq!(utc_datetime!(2019-07-01 0:00).weekday(), Monday);
assert_eq!(utc_datetime!(2019-08-01 0:00).weekday(), Thursday);
assert_eq!(utc_datetime!(2019-09-01 0:00).weekday(), Sunday);
assert_eq!(utc_datetime!(2019-10-01 0:00).weekday(), Tuesday);
assert_eq!(utc_datetime!(2019-11-01 0:00).weekday(), Friday);
assert_eq!(utc_datetime!(2019-12-01 0:00).weekday(), Sunday);Sourcepub const fn to_julian_day(self) -> i32
pub const fn to_julian_day(self) -> i32
Get the Julian day for the date. The time is not taken into account for this calculation.
Sourcepub const fn millisecond(self) -> u16
pub const fn millisecond(self) -> u16
Sourcepub const fn microsecond(self) -> u32
pub const fn microsecond(self) -> u32
Sourcepub const fn nanosecond(self) -> u32
pub const fn nanosecond(self) -> u32
Sourcepub const fn checked_add(self, duration: Duration) -> Option<Self>
pub const fn checked_add(self, duration: Duration) -> Option<Self>
Computes self + duration, returning None if an overflow occurred.
Sourcepub const fn checked_sub(self, duration: Duration) -> Option<Self>
pub const fn checked_sub(self, duration: Duration) -> Option<Self>
Computes self - duration, returning None if an overflow occurred.
Sourcepub const fn saturating_add(self, duration: Duration) -> Self
pub const fn saturating_add(self, duration: Duration) -> Self
Computes self + duration, saturating value on overflow.
Sourcepub const fn saturating_sub(self, duration: Duration) -> Self
pub const fn saturating_sub(self, duration: Duration) -> Self
Computes self - duration, saturating value on overflow.
Source§impl UtcDateTime
Methods that replace part of the UtcDateTime.
impl UtcDateTime
Methods that replace part of the UtcDateTime.
Sourcepub const fn replace_time(self, time: Time) -> Self
pub const fn replace_time(self, time: Time) -> Self
Sourcepub const fn replace_date(self, date: Date) -> Self
pub const fn replace_date(self, date: Date) -> Self
Sourcepub const fn replace_year(self, year: i32) -> Result<Self, ComponentRange>
pub const fn replace_year(self, year: i32) -> Result<Self, ComponentRange>
Replace the year. The month and day will be unchanged.
assert_eq!(
utc_datetime!(2022 - 02 - 18 12:00).replace_year(2019),
Ok(utc_datetime!(2019 - 02 - 18 12:00))
);
assert!(utc_datetime!(2022 - 02 - 18 12:00).replace_year(-1_000_000_000).is_err()); // -1_000_000_000 isn't a valid year
assert!(utc_datetime!(2022 - 02 - 18 12:00).replace_year(1_000_000_000).is_err()); // 1_000_000_000 isn't a valid yearSourcepub const fn replace_month(self, month: Month) -> Result<Self, ComponentRange>
pub const fn replace_month(self, month: Month) -> Result<Self, ComponentRange>
Sourcepub const fn replace_day(self, day: u8) -> Result<Self, ComponentRange>
pub const fn replace_day(self, day: u8) -> Result<Self, ComponentRange>
Replace the day of the month.
assert_eq!(
utc_datetime!(2022 - 02 - 18 12:00).replace_day(1),
Ok(utc_datetime!(2022 - 02 - 01 12:00))
);
assert!(utc_datetime!(2022 - 02 - 18 12:00).replace_day(0).is_err()); // 00 isn't a valid day
assert!(utc_datetime!(2022 - 02 - 18 12:00).replace_day(30).is_err()); // 30 isn't a valid day in FebruarySourcepub const fn replace_ordinal(self, ordinal: u16) -> Result<Self, ComponentRange>
pub const fn replace_ordinal(self, ordinal: u16) -> Result<Self, ComponentRange>
Replace the day of the year.
Sourcepub const fn truncate_to_day(self) -> Self
pub const fn truncate_to_day(self) -> Self
Sourcepub const fn replace_hour(self, hour: u8) -> Result<Self, ComponentRange>
pub const fn replace_hour(self, hour: u8) -> Result<Self, ComponentRange>
Sourcepub const fn truncate_to_hour(self) -> Self
pub const fn truncate_to_hour(self) -> Self
Sourcepub const fn replace_minute(
self,
sunday_based_week: u8,
) -> Result<Self, ComponentRange>
pub const fn replace_minute( self, sunday_based_week: u8, ) -> Result<Self, ComponentRange>
Sourcepub const fn truncate_to_minute(self) -> Self
pub const fn truncate_to_minute(self) -> Self
Sourcepub const fn replace_second(
self,
monday_based_week: u8,
) -> Result<Self, ComponentRange>
pub const fn replace_second( self, monday_based_week: u8, ) -> Result<Self, ComponentRange>
Sourcepub const fn truncate_to_second(self) -> Self
pub const fn truncate_to_second(self) -> Self
Sourcepub const fn replace_millisecond(
self,
millisecond: u16,
) -> Result<Self, ComponentRange>
pub const fn replace_millisecond( self, millisecond: u16, ) -> Result<Self, ComponentRange>
Replace the milliseconds within the second.
Sourcepub const fn truncate_to_millisecond(self) -> Self
pub const fn truncate_to_millisecond(self) -> Self
Sourcepub const fn replace_microsecond(
self,
microsecond: u32,
) -> Result<Self, ComponentRange>
pub const fn replace_microsecond( self, microsecond: u32, ) -> Result<Self, ComponentRange>
Replace the microseconds within the second.
Sourcepub const fn truncate_to_microsecond(self) -> Self
pub const fn truncate_to_microsecond(self) -> Self
Sourcepub const fn replace_nanosecond(
self,
nanosecond: u32,
) -> Result<Self, ComponentRange>
pub const fn replace_nanosecond( self, nanosecond: u32, ) -> Result<Self, ComponentRange>
Replace the nanoseconds within the second.
Source§impl UtcDateTime
impl UtcDateTime
Sourcepub fn format_into(
self,
output: &mut (impl Write + ?Sized),
format: &(impl Formattable + ?Sized),
) -> Result<usize, Format>
pub fn format_into( self, output: &mut (impl Write + ?Sized), format: &(impl Formattable + ?Sized), ) -> Result<usize, Format>
Format the UtcDateTime using the provided format
description.
Sourcepub fn format(
self,
format: &(impl Formattable + ?Sized),
) -> Result<String, Format>
pub fn format( self, format: &(impl Formattable + ?Sized), ) -> Result<String, Format>
Format the UtcDateTime using the provided format
description.
Source§impl UtcDateTime
impl UtcDateTime
Trait Implementations§
Source§impl Add<Duration> for UtcDateTime
impl Add<Duration> for UtcDateTime
Source§impl Add<Duration> for UtcDateTime
impl Add<Duration> for UtcDateTime
Source§fn add(self, duration: StdDuration) -> Self::Output
fn add(self, duration: StdDuration) -> Self::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = UtcDateTime
type Output = UtcDateTime
+ operator.Source§impl AddAssign<Duration> for UtcDateTime
impl AddAssign<Duration> for UtcDateTime
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
§Panics
This may panic if an overflow occurs.
Source§impl AddAssign<Duration> for UtcDateTime
impl AddAssign<Duration> for UtcDateTime
Source§fn add_assign(&mut self, rhs: StdDuration)
fn add_assign(&mut self, rhs: StdDuration)
§Panics
This may panic if an overflow occurs.
Source§impl Clone for UtcDateTime
impl Clone for UtcDateTime
Source§fn clone(&self) -> UtcDateTime
fn clone(&self) -> UtcDateTime
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for UtcDateTime
impl Debug for UtcDateTime
Source§impl Display for UtcDateTime
impl Display for UtcDateTime
Source§impl From<OffsetDateTime> for UtcDateTime
impl From<OffsetDateTime> for UtcDateTime
Source§fn from(datetime: OffsetDateTime) -> Self
fn from(datetime: OffsetDateTime) -> Self
§Panics
This may panic if an overflow occurs.
Source§impl From<SystemTime> for UtcDateTime
impl From<SystemTime> for UtcDateTime
Source§fn from(system_time: SystemTime) -> Self
fn from(system_time: SystemTime) -> Self
Source§impl From<UtcDateTime> for OffsetDateTime
impl From<UtcDateTime> for OffsetDateTime
Source§fn from(datetime: UtcDateTime) -> Self
fn from(datetime: UtcDateTime) -> Self
§Panics
This may panic if an overflow occurs.
Source§impl From<UtcDateTime> for SystemTime
impl From<UtcDateTime> for SystemTime
Source§fn from(datetime: UtcDateTime) -> Self
fn from(datetime: UtcDateTime) -> Self
§Panics
This may panic if the resulting SystemTime cannot be represented.
Source§impl Hash for UtcDateTime
impl Hash for UtcDateTime
Source§impl Ord for UtcDateTime
impl Ord for UtcDateTime
Source§fn cmp(&self, other: &UtcDateTime) -> Ordering
fn cmp(&self, other: &UtcDateTime) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq<OffsetDateTime> for UtcDateTime
impl PartialEq<OffsetDateTime> for UtcDateTime
Source§impl PartialEq<SystemTime> for UtcDateTime
impl PartialEq<SystemTime> for UtcDateTime
Source§impl PartialEq<UtcDateTime> for OffsetDateTime
impl PartialEq<UtcDateTime> for OffsetDateTime
Source§impl PartialEq<UtcDateTime> for SystemTime
impl PartialEq<UtcDateTime> for SystemTime
Source§impl PartialEq for UtcDateTime
impl PartialEq for UtcDateTime
Source§impl PartialOrd<OffsetDateTime> for UtcDateTime
impl PartialOrd<OffsetDateTime> for UtcDateTime
Source§impl PartialOrd<SystemTime> for UtcDateTime
impl PartialOrd<SystemTime> for UtcDateTime
Source§impl PartialOrd<UtcDateTime> for OffsetDateTime
impl PartialOrd<UtcDateTime> for OffsetDateTime
Source§impl PartialOrd<UtcDateTime> for SystemTime
impl PartialOrd<UtcDateTime> for SystemTime
Source§impl PartialOrd for UtcDateTime
impl PartialOrd for UtcDateTime
Source§impl SmartDisplay for UtcDateTime
impl SmartDisplay for UtcDateTime
Source§fn metadata(&self, _: FormatterOptions) -> Metadata<'_, Self>
fn metadata(&self, _: FormatterOptions) -> Metadata<'_, Self>
Source§impl Sub<Duration> for UtcDateTime
impl Sub<Duration> for UtcDateTime
Source§impl Sub<Duration> for UtcDateTime
impl Sub<Duration> for UtcDateTime
Source§fn sub(self, duration: StdDuration) -> Self::Output
fn sub(self, duration: StdDuration) -> Self::Output
§Panics
This may panic if an overflow occurs.
Source§type Output = UtcDateTime
type Output = UtcDateTime
- operator.Source§impl Sub<OffsetDateTime> for UtcDateTime
impl Sub<OffsetDateTime> for UtcDateTime
Source§impl Sub<SystemTime> for UtcDateTime
impl Sub<SystemTime> for UtcDateTime
Source§impl Sub<UtcDateTime> for OffsetDateTime
impl Sub<UtcDateTime> for OffsetDateTime
Source§impl Sub<UtcDateTime> for SystemTime
impl Sub<UtcDateTime> for SystemTime
Source§impl Sub for UtcDateTime
impl Sub for UtcDateTime
Source§impl SubAssign<Duration> for UtcDateTime
impl SubAssign<Duration> for UtcDateTime
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
§Panics
This may panic if an overflow occurs.
Source§impl SubAssign<Duration> for UtcDateTime
impl SubAssign<Duration> for UtcDateTime
Source§fn sub_assign(&mut self, rhs: StdDuration)
fn sub_assign(&mut self, rhs: StdDuration)
§Panics
This may panic if an overflow occurs.