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: UtcDateTime
pub const UNIX_EPOCH: UtcDateTime
Midnight, 1 January, 1970.
assert_eq!(UtcDateTime::UNIX_EPOCH, utc_datetime!(1970-01-01 0:00));Sourcepub const MIN: UtcDateTime
pub const MIN: UtcDateTime
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
// Assuming `large-dates` feature is disabled.
assert_eq!(UtcDateTime::MIN, utc_datetime!(-9999-01-01 0:00));Sourcepub const MAX: UtcDateTime
pub const MAX: UtcDateTime
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
// Assuming `large-dates` feature is disabled.
assert_eq!(UtcDateTime::MAX, utc_datetime!(+9999-12-31 23:59:59.999_999_999));Sourcepub fn now() -> UtcDateTime
pub fn now() -> UtcDateTime
Create a new UtcDateTime with the current date and time.
assert!(UtcDateTime::now().year() >= 2019);Sourcepub const fn new(date: Date, time: Time) -> UtcDateTime
pub const fn new(date: Date, time: Time) -> UtcDateTime
Sourcepub const fn from_unix_timestamp(
timestamp: i64,
) -> Result<UtcDateTime, ComponentRange>
pub const fn from_unix_timestamp( timestamp: i64, ) -> Result<UtcDateTime, 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:
let (timestamp, nanos) = (1, 500_000_000);
assert_eq!(
UtcDateTime::from_unix_timestamp(timestamp)? + Duration::nanoseconds(nanos),
UtcDateTime::UNIX_EPOCH + 1.5.seconds()
);Sourcepub const fn from_unix_timestamp_nanos(
timestamp: i128,
) -> Result<UtcDateTime, ComponentRange>
pub const fn from_unix_timestamp_nanos( timestamp: i128, ) -> Result<UtcDateTime, ComponentRange>
Construct an UtcDateTime from the provided Unix timestamp (in nanoseconds).
assert_eq!(
UtcDateTime::from_unix_timestamp_nanos(0),
Ok(UtcDateTime::UNIX_EPOCH),
);
assert_eq!(
UtcDateTime::from_unix_timestamp_nanos(1_546_300_800_000_000_000),
Ok(utc_datetime!(2019-01-01 0:00)),
);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.
assert_eq!(
utc_datetime!(2000-01-01 0:00)
.checked_to_offset(offset!(-1))
.unwrap()
.year(),
1999,
);
assert_eq!(
UtcDateTime::MAX.checked_to_offset(offset!(+1)),
None,
);Sourcepub const fn unix_timestamp(self) -> i64
pub const fn unix_timestamp(self) -> i64
Get the Unix timestamp.
assert_eq!(utc_datetime!(1970-01-01 0:00).unix_timestamp(), 0);
assert_eq!(utc_datetime!(1970-01-01 1:00).unix_timestamp(), 3_600);Sourcepub const fn unix_timestamp_nanos(self) -> i128
pub const fn unix_timestamp_nanos(self) -> i128
Get the Unix timestamp in nanoseconds.
use time_macros::utc_datetime;
assert_eq!(utc_datetime!(1970-01-01 0:00).unix_timestamp_nanos(), 0);
assert_eq!(
utc_datetime!(1970-01-01 1:00).unix_timestamp_nanos(),
3_600_000_000_000,
);Sourcepub const fn date(self) -> Date
pub const fn date(self) -> Date
Get the Date component of the UtcDateTime.
assert_eq!(utc_datetime!(2019-01-01 0:00).date(), date!(2019-01-01));Sourcepub const fn time(self) -> Time
pub const fn time(self) -> Time
Get the Time component of the UtcDateTime.
assert_eq!(utc_datetime!(2019-01-01 0:00).time(), time!(0:00));Sourcepub const fn year(self) -> i32
pub const fn year(self) -> i32
Get the year of the date.
assert_eq!(utc_datetime!(2019-01-01 0:00).year(), 2019);
assert_eq!(utc_datetime!(2019-12-31 0:00).year(), 2019);
assert_eq!(utc_datetime!(2020-01-01 0:00).year(), 2020);Sourcepub const fn month(self) -> Month
pub const fn month(self) -> Month
Get the month of the date.
assert_eq!(utc_datetime!(2019-01-01 0:00).month(), Month::January);
assert_eq!(utc_datetime!(2019-12-31 0:00).month(), Month::December);Sourcepub const fn day(self) -> u8
pub const fn day(self) -> u8
Get the day of the date.
The returned value will always be in the range 1..=31.
assert_eq!(utc_datetime!(2019-01-01 0:00).day(), 1);
assert_eq!(utc_datetime!(2019-12-31 0:00).day(), 31);Sourcepub const fn ordinal(self) -> u16
pub const fn ordinal(self) -> u16
Get the day of the year.
The returned value will always be in the range 1..=366 (1..=365 for common years).
assert_eq!(utc_datetime!(2019-01-01 0:00).ordinal(), 1);
assert_eq!(utc_datetime!(2019-12-31 0:00).ordinal(), 365);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.
assert_eq!(utc_datetime!(2019-01-01 0:00).iso_week(), 1);
assert_eq!(utc_datetime!(2019-10-04 0:00).iso_week(), 40);
assert_eq!(utc_datetime!(2020-01-01 0:00).iso_week(), 1);
assert_eq!(utc_datetime!(2020-12-31 0:00).iso_week(), 53);
assert_eq!(utc_datetime!(2021-01-01 0:00).iso_week(), 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.
assert_eq!(utc_datetime!(2019-01-01 0:00).sunday_based_week(), 0);
assert_eq!(utc_datetime!(2020-01-01 0:00).sunday_based_week(), 0);
assert_eq!(utc_datetime!(2020-12-31 0:00).sunday_based_week(), 52);
assert_eq!(utc_datetime!(2021-01-01 0:00).sunday_based_week(), 0);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.
assert_eq!(utc_datetime!(2019-01-01 0:00).monday_based_week(), 0);
assert_eq!(utc_datetime!(2020-01-01 0:00).monday_based_week(), 0);
assert_eq!(utc_datetime!(2020-12-31 0:00).monday_based_week(), 52);
assert_eq!(utc_datetime!(2021-01-01 0:00).monday_based_week(), 0);Sourcepub const fn to_calendar_date(self) -> (i32, Month, u8)
pub const fn to_calendar_date(self) -> (i32, Month, u8)
Get the year, month, and day.
assert_eq!(
utc_datetime!(2019-01-01 0:00).to_calendar_date(),
(2019, Month::January, 1)
);Sourcepub const fn to_ordinal_date(self) -> (i32, u16)
pub const fn to_ordinal_date(self) -> (i32, u16)
Get the year and ordinal day number.
assert_eq!(utc_datetime!(2019-01-01 0:00).to_ordinal_date(), (2019, 1));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.
assert_eq!(utc_datetime!(-4713-11-24 0:00).to_julian_day(), 0);
assert_eq!(utc_datetime!(2000-01-01 0:00).to_julian_day(), 2_451_545);
assert_eq!(utc_datetime!(2019-01-01 0:00).to_julian_day(), 2_458_485);
assert_eq!(utc_datetime!(2019-12-31 0:00).to_julian_day(), 2_458_849);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!(utc_datetime!(2020-01-01 0:00:00).as_hms(), (0, 0, 0));
assert_eq!(utc_datetime!(2020-01-01 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!(utc_datetime!(2020-01-01 0:00:00).as_hms_milli(), (0, 0, 0, 0));
assert_eq!(
utc_datetime!(2020-01-01 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!(utc_datetime!(2020-01-01 0:00:00).as_hms_micro(), (0, 0, 0, 0));
assert_eq!(
utc_datetime!(2020-01-01 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!(utc_datetime!(2020-01-01 0:00:00).as_hms_nano(), (0, 0, 0, 0));
assert_eq!(
utc_datetime!(2020-01-01 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!(utc_datetime!(2019-01-01 0:00).hour(), 0);
assert_eq!(utc_datetime!(2019-01-01 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!(utc_datetime!(2019-01-01 0:00).minute(), 0);
assert_eq!(utc_datetime!(2019-01-01 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!(utc_datetime!(2019-01-01 0:00).second(), 0);
assert_eq!(utc_datetime!(2019-01-01 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!(utc_datetime!(2019-01-01 0:00).millisecond(), 0);
assert_eq!(utc_datetime!(2019-01-01 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!(utc_datetime!(2019-01-01 0:00).microsecond(), 0);
assert_eq!(
utc_datetime!(2019-01-01 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!(utc_datetime!(2019-01-01 0:00).nanosecond(), 0);
assert_eq!(
utc_datetime!(2019-01-01 23:59:59.999_999_999).nanosecond(),
999_999_999,
);Sourcepub const fn checked_add(self, duration: Duration) -> Option<UtcDateTime>
pub const fn checked_add(self, duration: Duration) -> Option<UtcDateTime>
Computes self + duration, returning None if an overflow occurred.
assert_eq!(UtcDateTime::MIN.checked_add((-2).days()), None);
assert_eq!(UtcDateTime::MAX.checked_add(1.days()), None);
assert_eq!(
utc_datetime!(2019-11-25 15:30).checked_add(27.hours()),
Some(utc_datetime!(2019-11-26 18:30))
);Sourcepub const fn checked_sub(self, duration: Duration) -> Option<UtcDateTime>
pub const fn checked_sub(self, duration: Duration) -> Option<UtcDateTime>
Computes self - duration, returning None if an overflow occurred.
assert_eq!(UtcDateTime::MIN.checked_sub(2.days()), None);
assert_eq!(UtcDateTime::MAX.checked_sub((-1).days()), None);
assert_eq!(
utc_datetime!(2019-11-25 15:30).checked_sub(27.hours()),
Some(utc_datetime!(2019-11-24 12:30))
);Sourcepub const fn saturating_add(self, duration: Duration) -> UtcDateTime
pub const fn saturating_add(self, duration: Duration) -> UtcDateTime
Computes self + duration, saturating value on overflow.
assert_eq!(
UtcDateTime::MIN.saturating_add((-2).days()),
UtcDateTime::MIN
);
assert_eq!(
UtcDateTime::MAX.saturating_add(2.days()),
UtcDateTime::MAX
);
assert_eq!(
utc_datetime!(2019-11-25 15:30).saturating_add(27.hours()),
utc_datetime!(2019-11-26 18:30)
);Sourcepub const fn saturating_sub(self, duration: Duration) -> UtcDateTime
pub const fn saturating_sub(self, duration: Duration) -> UtcDateTime
Computes self - duration, saturating value on overflow.
assert_eq!(
UtcDateTime::MIN.saturating_sub(2.days()),
UtcDateTime::MIN
);
assert_eq!(
UtcDateTime::MAX.saturating_sub((-2).days()),
UtcDateTime::MAX
);
assert_eq!(
utc_datetime!(2019-11-25 15:30).saturating_sub(27.hours()),
utc_datetime!(2019-11-24 12:30)
);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) -> UtcDateTime
pub const fn replace_time(self, time: Time) -> UtcDateTime
Replace the time, preserving the date.
assert_eq!(
utc_datetime!(2020-01-01 17:00).replace_time(time!(5:00)),
utc_datetime!(2020-01-01 5:00)
);Sourcepub const fn replace_date(self, date: Date) -> UtcDateTime
pub const fn replace_date(self, date: Date) -> UtcDateTime
Replace the date, preserving the time.
assert_eq!(
utc_datetime!(2020-01-01 12:00).replace_date(date!(2020-01-30)),
utc_datetime!(2020-01-30 12:00)
);Sourcepub const fn replace_year(
self,
year: i32,
) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_year( self, year: i32, ) -> Result<UtcDateTime, 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<UtcDateTime, ComponentRange>
pub const fn replace_month( self, month: Month, ) -> Result<UtcDateTime, ComponentRange>
Replace the month of the year.
assert_eq!(
utc_datetime!(2022-02-18 12:00).replace_month(Month::January),
Ok(utc_datetime!(2022-01-18 12:00))
);
assert!(utc_datetime!(2022-01-30 12:00).replace_month(Month::February).is_err()); // 30 isn't a valid day in FebruarySourcepub const fn replace_day(self, day: u8) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_day(self, day: u8) -> Result<UtcDateTime, 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<UtcDateTime, ComponentRange>
pub const fn replace_ordinal( self, ordinal: u16, ) -> Result<UtcDateTime, ComponentRange>
Replace the day of the year.
assert_eq!(utc_datetime!(2022-049 12:00).replace_ordinal(1), Ok(utc_datetime!(2022-001 12:00)));
assert!(utc_datetime!(2022-049 12:00).replace_ordinal(0).is_err()); // 0 isn't a valid ordinal
assert!(utc_datetime!(2022-049 12:00).replace_ordinal(366).is_err()); // 2022 isn't a leap yearSourcepub const fn truncate_to_day(self) -> UtcDateTime
pub const fn truncate_to_day(self) -> UtcDateTime
Truncate to the start of the day, setting the time to midnight.
assert_eq!(
utc_datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_day(),
utc_datetime!(2022-02-18 0:00)
);Sourcepub const fn replace_hour(self, hour: u8) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_hour(self, hour: u8) -> Result<UtcDateTime, ComponentRange>
Replace the clock hour.
assert_eq!(
utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_hour(7),
Ok(utc_datetime!(2022-02-18 07:02:03.004_005_006))
);
assert!(utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_hour(24).is_err()); // 24 isn't a valid hourSourcepub const fn truncate_to_hour(self) -> UtcDateTime
pub const fn truncate_to_hour(self) -> UtcDateTime
Truncate to the hour, setting the minute, second, and subsecond components to zero.
assert_eq!(
utc_datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_hour(),
utc_datetime!(2022-02-18 15:00)
);Sourcepub const fn replace_minute(
self,
sunday_based_week: u8,
) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_minute( self, sunday_based_week: u8, ) -> Result<UtcDateTime, ComponentRange>
Replace the minutes within the hour.
assert_eq!(
utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_minute(7),
Ok(utc_datetime!(2022-02-18 01:07:03.004_005_006))
);
assert!(utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_minute(60).is_err()); // 60 isn't a valid minuteSourcepub const fn truncate_to_minute(self) -> UtcDateTime
pub const fn truncate_to_minute(self) -> UtcDateTime
Truncate to the minute, setting the second and subsecond components to zero.
assert_eq!(
utc_datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_minute(),
utc_datetime!(2022-02-18 15:30)
);Sourcepub const fn replace_second(
self,
monday_based_week: u8,
) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_second( self, monday_based_week: u8, ) -> Result<UtcDateTime, ComponentRange>
Replace the seconds within the minute.
assert_eq!(
utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_second(7),
Ok(utc_datetime!(2022-02-18 01:02:07.004_005_006))
);
assert!(utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_second(60).is_err()); // 60 isn't a valid secondSourcepub const fn truncate_to_second(self) -> UtcDateTime
pub const fn truncate_to_second(self) -> UtcDateTime
Truncate to the second, setting the subsecond components to zero.
assert_eq!(
utc_datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_second(),
utc_datetime!(2022-02-18 15:30:45)
);Sourcepub const fn replace_millisecond(
self,
millisecond: u16,
) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_millisecond( self, millisecond: u16, ) -> Result<UtcDateTime, ComponentRange>
Replace the milliseconds within the second.
assert_eq!(
utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_millisecond(7),
Ok(utc_datetime!(2022-02-18 01:02:03.007))
);
assert!(utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_millisecond(1_000).is_err()); // 1_000 isn't a valid millisecondSourcepub const fn truncate_to_millisecond(self) -> UtcDateTime
pub const fn truncate_to_millisecond(self) -> UtcDateTime
Truncate to the millisecond, setting the microsecond and nanosecond components to zero.
assert_eq!(
utc_datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_millisecond(),
utc_datetime!(2022-02-18 15:30:45.123)
);Sourcepub const fn replace_microsecond(
self,
microsecond: u32,
) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_microsecond( self, microsecond: u32, ) -> Result<UtcDateTime, ComponentRange>
Replace the microseconds within the second.
assert_eq!(
utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_microsecond(7_008),
Ok(utc_datetime!(2022-02-18 01:02:03.007_008))
);
assert!(utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_microsecond(1_000_000).is_err()); // 1_000_000 isn't a valid microsecondSourcepub const fn truncate_to_microsecond(self) -> UtcDateTime
pub const fn truncate_to_microsecond(self) -> UtcDateTime
Truncate to the microsecond, setting the nanosecond component to zero.
assert_eq!(
utc_datetime!(2022-02-18 15:30:45.123_456_789).truncate_to_microsecond(),
utc_datetime!(2022-02-18 15:30:45.123_456)
);Sourcepub const fn replace_nanosecond(
self,
nanosecond: u32,
) -> Result<UtcDateTime, ComponentRange>
pub const fn replace_nanosecond( self, nanosecond: u32, ) -> Result<UtcDateTime, ComponentRange>
Replace the nanoseconds within the second.
assert_eq!(
utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_nanosecond(7_008_009),
Ok(utc_datetime!(2022-02-18 01:02:03.007_008_009))
);
assert!(utc_datetime!(2022-02-18 01:02:03.004_005_006).replace_nanosecond(1_000_000_000).is_err()); // 1_000_000_000 isn't a valid nanosecondSource§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.
let format = format_description::parse(
"[year]-[month]-[day] [hour]:[minute]:[second] [offset_hour \
sign:mandatory]:[offset_minute]:[offset_second]",
)?;
assert_eq!(
utc_datetime!(2020-01-02 03:04:05).format(&format)?,
"2020-01-02 03:04:05 +00:00:00"
);Source§impl UtcDateTime
impl UtcDateTime
Sourcepub fn parse(
input: &str,
description: &(impl Parsable + ?Sized),
) -> Result<UtcDateTime, Parse>
pub fn parse( input: &str, description: &(impl Parsable + ?Sized), ) -> Result<UtcDateTime, Parse>
Parse an UtcDateTime from the input using the provided format
description. A UtcOffset is permitted, but not required to
be present. If present, the value will be converted to UTC.
let format = format_description!("[year]-[month]-[day] [hour]:[minute]:[second]");
assert_eq!(
UtcDateTime::parse("2020-01-02 03:04:05", &format)?,
utc_datetime!(2020-01-02 03:04:05)
);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§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: Duration)
fn add_assign(&mut self, rhs: Duration)
§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) -> UtcDateTime
fn from(datetime: OffsetDateTime) -> UtcDateTime
§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) -> UtcDateTime
fn from(system_time: SystemTime) -> UtcDateTime
Source§impl From<UtcDateTime> for OffsetDateTime
impl From<UtcDateTime> for OffsetDateTime
Source§fn from(datetime: UtcDateTime) -> OffsetDateTime
fn from(datetime: UtcDateTime) -> OffsetDateTime
§Panics
This may panic if an overflow occurs.
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 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 for UtcDateTime
impl PartialOrd for UtcDateTime
Source§impl SmartDisplay for UtcDateTime
impl SmartDisplay for UtcDateTime
Source§fn metadata(&self, _: FormatterOptions) -> Metadata<'_, UtcDateTime>
fn metadata(&self, _: FormatterOptions) -> Metadata<'_, UtcDateTime>
Source§fn fmt_with_metadata(
&self,
f: &mut Formatter<'_>,
metadata: Metadata<'_, UtcDateTime>,
) -> Result<(), Error>
fn fmt_with_metadata( &self, f: &mut Formatter<'_>, metadata: Metadata<'_, UtcDateTime>, ) -> Result<(), Error>
Source§impl Sub<Duration> for UtcDateTime
impl Sub<Duration> for UtcDateTime
Source§impl Sub<Duration> for UtcDateTime
impl Sub<Duration> for UtcDateTime
Source§impl Sub<OffsetDateTime> for UtcDateTime
impl Sub<OffsetDateTime> for UtcDateTime
Source§fn sub(
self,
rhs: OffsetDateTime,
) -> <UtcDateTime as Sub<OffsetDateTime>>::Output
fn sub( self, rhs: OffsetDateTime, ) -> <UtcDateTime as Sub<OffsetDateTime>>::Output
§Panics
This may panic if an overflow occurs.
Source§impl Sub<SystemTime> for UtcDateTime
impl Sub<SystemTime> for UtcDateTime
Source§fn sub(self, rhs: SystemTime) -> <UtcDateTime as Sub<SystemTime>>::Output
fn sub(self, rhs: SystemTime) -> <UtcDateTime as Sub<SystemTime>>::Output
§Panics
This may panic if an overflow occurs.
Source§impl Sub<UtcDateTime> for OffsetDateTime
impl Sub<UtcDateTime> for OffsetDateTime
Source§fn sub(self, rhs: UtcDateTime) -> <OffsetDateTime as Sub<UtcDateTime>>::Output
fn sub(self, rhs: UtcDateTime) -> <OffsetDateTime as Sub<UtcDateTime>>::Output
§Panics
This may panic if an overflow occurs.
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: Duration)
fn sub_assign(&mut self, rhs: Duration)
§Panics
This may panic if an overflow occurs.