pub struct OffsetDateTime { /* private fields */ }Expand description
A PrimitiveDateTime with a UtcOffset.
Implementations§
Source§impl OffsetDateTime
impl OffsetDateTime
Sourcepub const UNIX_EPOCH: Self
pub const UNIX_EPOCH: Self
Sourcepub const fn new_in_offset(date: Date, time: Time, offset: UtcOffset) -> Self
pub const fn new_in_offset(date: Date, time: Time, offset: UtcOffset) -> Self
Sourcepub const fn to_offset(self, offset: UtcOffset) -> Self
pub const fn to_offset(self, offset: UtcOffset) -> Self
Convert the OffsetDateTime from the current UtcOffset to the provided UtcOffset.
assert_eq!(
datetime!(2000-01-01 0:00 UTC)
.to_offset(offset!(-1))
.year(),
1999,
);
// Let's see what time Sydney's new year's celebration is in New York and Los Angeles.
// Construct midnight on new year's in Sydney.
let sydney = datetime!(2000-01-01 0:00 +11);
let new_york = sydney.to_offset(offset!(-5));
let los_angeles = sydney.to_offset(offset!(-8));
assert_eq!(sydney.hour(), 0);
assert_eq!(new_york.hour(), 8);
assert_eq!(los_angeles.hour(), 5);§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<Self>
pub const fn checked_to_offset(self, offset: UtcOffset) -> Option<Self>
Sourcepub const fn to_utc(self) -> UtcDateTime
pub const fn to_utc(self) -> UtcDateTime
Convert the OffsetDateTime from the current UtcOffset to UTC, returning a
UtcDateTime.
§Panics
This method panics if the UTC date-time is outside the supported range.
Sourcepub const fn checked_to_utc(self) -> Option<UtcDateTime>
pub const fn checked_to_utc(self) -> Option<UtcDateTime>
Convert the OffsetDateTime from the current UtcOffset to UTC, returning None if the
UTC date-time is invalid. Returns a UtcDateTime.
Sourcepub const fn from_unix_timestamp(timestamp: i64) -> Result<Self, ComponentRange>
pub const fn from_unix_timestamp(timestamp: i64) -> Result<Self, ComponentRange>
Create an OffsetDateTime from the provided Unix timestamp. Calling .offset() on the
resulting value is guaranteed to return UTC.
assert_eq!(
OffsetDateTime::from_unix_timestamp(0),
Ok(OffsetDateTime::UNIX_EPOCH),
);
assert_eq!(
OffsetDateTime::from_unix_timestamp(1_546_300_800),
Ok(datetime!(2019-01-01 0:00 UTC)),
);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>
Construct an OffsetDateTime from the provided Unix timestamp (in nanoseconds). Calling
.offset() on the resulting value is guaranteed to return UTC.
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 of the date in the stored offset.
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!(
datetime!(2019-01-01 0:00 UTC).to_iso_week_date(),
(2019, 1, Tuesday)
);
assert_eq!(
datetime!(2019-10-04 0:00 UTC).to_iso_week_date(),
(2019, 40, Friday)
);
assert_eq!(
datetime!(2020-01-01 0:00 UTC).to_iso_week_date(),
(2020, 1, Wednesday)
);
assert_eq!(
datetime!(2020-12-31 0:00 UTC).to_iso_week_date(),
(2020, 53, Thursday)
);
assert_eq!(
datetime!(2021-01-01 0:00 UTC).to_iso_week_date(),
(2020, 53, Friday)
);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.
let datetime = Date::MIN.midnight().assume_offset(offset!(+10));
assert_eq!(datetime.checked_add((-2).days()), None);
let datetime = Date::MAX.midnight().assume_offset(offset!(+10));
assert_eq!(datetime.checked_add(2.days()), None);
assert_eq!(
datetime!(2019-11-25 15:30 +10).checked_add(27.hours()),
Some(datetime!(2019-11-26 18:30 +10))
);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.
let datetime = Date::MIN.midnight().assume_offset(offset!(+10));
assert_eq!(datetime.checked_sub(2.days()), None);
let datetime = Date::MAX.midnight().assume_offset(offset!(+10));
assert_eq!(datetime.checked_sub((-2).days()), None);
assert_eq!(
datetime!(2019-11-25 15:30 +10).checked_sub(27.hours()),
Some(datetime!(2019-11-24 12:30 +10))
);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.
assert_eq!(
datetime!(-9999-01-01 0:00 +10).saturating_add((-2).days()),
datetime!(-9999-01-01 0:00 +10)
);
assert_eq!(
datetime!(+9999-12-31 23:59:59.999_999_999 +10).saturating_add(2.days()),
datetime!(+9999-12-31 23:59:59.999_999_999 +10)
);
assert_eq!(
datetime!(2019-11-25 15:30 +10).saturating_add(27.hours()),
datetime!(2019-11-26 18:30 +10)
);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.
assert_eq!(
datetime!(-9999-01-01 0:00 +10).saturating_sub(2.days()),
datetime!(-9999-01-01 0:00 +10)
);
assert_eq!(
datetime!(+9999-12-31 23:59:59.999_999_999 +10).saturating_sub((-2).days()),
datetime!(+9999-12-31 23:59:59.999_999_999 +10)
);
assert_eq!(
datetime!(2019-11-25 15:30 +10).saturating_sub(27.hours()),
datetime!(2019-11-24 12:30 +10)
);Source§impl OffsetDateTime
Methods that replace part of the OffsetDateTime.
impl OffsetDateTime
Methods that replace part of the OffsetDateTime.
Sourcepub const fn replace_time(self, time: Time) -> Self
pub const fn replace_time(self, time: Time) -> Self
Replace the time, which is assumed to be in the stored offset. The date and offset components are unchanged.
assert_eq!(
datetime!(2020-01-01 5:00 UTC).replace_time(time!(12:00)),
datetime!(2020-01-01 12:00 UTC)
);
assert_eq!(
datetime!(2020-01-01 12:00 -5).replace_time(time!(7:00)),
datetime!(2020-01-01 7:00 -5)
);
assert_eq!(
datetime!(2020-01-01 0:00 +1).replace_time(time!(12:00)),
datetime!(2020-01-01 12:00 +1)
);Sourcepub const fn replace_date(self, date: Date) -> Self
pub const fn replace_date(self, date: Date) -> Self
Replace the date, which is assumed to be in the stored offset. The time and offset components are unchanged.
Sourcepub const fn replace_date_time(self, date_time: PrimitiveDateTime) -> Self
pub const fn replace_date_time(self, date_time: PrimitiveDateTime) -> Self
Replace the date and time, which are assumed to be in the stored offset. The offset component remains unchanged.
Sourcepub const fn replace_offset(self, offset: UtcOffset) -> Self
pub const fn replace_offset(self, offset: UtcOffset) -> 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!(
datetime!(2022-02-18 12:00 +01).replace_year(2019),
Ok(datetime!(2019-02-18 12:00 +01))
);
assert!(datetime!(2022-02-18 12:00 +01).replace_year(-1_000_000_000).is_err()); // -1_000_000_000 isn't a valid year
assert!(datetime!(2022-02-18 12:00 +01).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.
Sourcepub 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, minute: u8) -> Result<Self, ComponentRange>
pub const fn replace_minute(self, minute: 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, second: u8) -> Result<Self, ComponentRange>
pub const fn replace_second(self, second: 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 OffsetDateTime
impl OffsetDateTime
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 OffsetDateTime 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 OffsetDateTime using the provided format
description.
Trait Implementations§
Source§impl Add<Duration> for OffsetDateTime
impl Add<Duration> for OffsetDateTime
Source§impl Add<Duration> for OffsetDateTime
impl Add<Duration> for OffsetDateTime
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 = OffsetDateTime
type Output = OffsetDateTime
+ operator.Source§impl AddAssign<Duration> for OffsetDateTime
impl AddAssign<Duration> for OffsetDateTime
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 OffsetDateTime
impl AddAssign<Duration> for OffsetDateTime
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 OffsetDateTime
impl Clone for OffsetDateTime
Source§fn clone(&self) -> OffsetDateTime
fn clone(&self) -> OffsetDateTime
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OffsetDateTime
impl Debug for OffsetDateTime
Source§impl Display for OffsetDateTime
impl Display for OffsetDateTime
Source§impl From<OffsetDateTime> for SystemTime
impl From<OffsetDateTime> for SystemTime
Source§fn from(datetime: OffsetDateTime) -> Self
fn from(datetime: OffsetDateTime) -> Self
§Panics
This may panic if the resulting SystemTime cannot be represented.
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 OffsetDateTime
impl From<SystemTime> for OffsetDateTime
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 Hash for OffsetDateTime
impl Hash for OffsetDateTime
Source§impl Ord for OffsetDateTime
impl Ord for OffsetDateTime
Source§impl PartialEq<OffsetDateTime> for SystemTime
impl PartialEq<OffsetDateTime> for SystemTime
Source§impl PartialEq<OffsetDateTime> for UtcDateTime
impl PartialEq<OffsetDateTime> for UtcDateTime
Source§impl PartialEq<SystemTime> for OffsetDateTime
impl PartialEq<SystemTime> for OffsetDateTime
Source§impl PartialEq<UtcDateTime> for OffsetDateTime
impl PartialEq<UtcDateTime> for OffsetDateTime
Source§impl PartialEq for OffsetDateTime
impl PartialEq for OffsetDateTime
Source§impl PartialOrd<OffsetDateTime> for SystemTime
impl PartialOrd<OffsetDateTime> for SystemTime
Source§impl PartialOrd<OffsetDateTime> for UtcDateTime
impl PartialOrd<OffsetDateTime> for UtcDateTime
Source§impl PartialOrd<SystemTime> for OffsetDateTime
impl PartialOrd<SystemTime> for OffsetDateTime
Source§impl PartialOrd<UtcDateTime> for OffsetDateTime
impl PartialOrd<UtcDateTime> for OffsetDateTime
Source§impl PartialOrd for OffsetDateTime
impl PartialOrd for OffsetDateTime
Source§impl SmartDisplay for OffsetDateTime
impl SmartDisplay for OffsetDateTime
Source§fn metadata(&self, _: FormatterOptions) -> Metadata<'_, Self>
fn metadata(&self, _: FormatterOptions) -> Metadata<'_, Self>
Source§impl Sub<Duration> for OffsetDateTime
impl Sub<Duration> for OffsetDateTime
Source§impl Sub<Duration> for OffsetDateTime
impl Sub<Duration> for OffsetDateTime
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 = OffsetDateTime
type Output = OffsetDateTime
- operator.Source§impl Sub<OffsetDateTime> for SystemTime
impl Sub<OffsetDateTime> for SystemTime
Source§impl Sub<OffsetDateTime> for UtcDateTime
impl Sub<OffsetDateTime> for UtcDateTime
Source§impl Sub<SystemTime> for OffsetDateTime
impl Sub<SystemTime> for OffsetDateTime
Source§impl Sub<UtcDateTime> for OffsetDateTime
impl Sub<UtcDateTime> for OffsetDateTime
Source§impl Sub for OffsetDateTime
impl Sub for OffsetDateTime
Source§impl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for OffsetDateTime
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 OffsetDateTime
impl SubAssign<Duration> for OffsetDateTime
Source§fn sub_assign(&mut self, rhs: StdDuration)
fn sub_assign(&mut self, rhs: StdDuration)
§Panics
This may panic if an overflow occurs.