Struct OffsetDateTime
pub struct OffsetDateTime { /* private fields */ }
A PlainDateTime with a UtcOffset.
Implementations
impl OffsetDateTime
const fn replace_time(self, time: Time) -> SelfReplace the time, which is assumed to be in the stored offset. The date and offset components are unchanged.
# use ; assert_eq!; assert_eq!; assert_eq!;const fn replace_date(self, date: Date) -> SelfReplace the date, which is assumed to be in the stored offset. The time and offset components are unchanged.
# use ; assert_eq!; assert_eq!;const fn replace_date_time(self, date_time: PlainDateTime) -> SelfReplace the date and time, which are assumed to be in the stored offset. The offset component remains unchanged.
# use datetime; assert_eq!; assert_eq!;const fn replace_offset(self, offset: UtcOffset) -> SelfReplace the offset. The date and time components remain unchanged.
# use ; assert_eq!;const fn replace_year(self, year: i32) -> Result<Self, ComponentRange>Replace the year. The month and day will be unchanged.
# use 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 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 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 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 datetime; assert_eq!;const fn replace_hour(self, hour: u8) -> Result<Self, ComponentRange>Replace the clock hour.
# use 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 datetime; assert_eq!;const fn replace_minute(self, minute: u8) -> Result<Self, ComponentRange>Replace the minutes within the hour.
# use 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 datetime; assert_eq!;const fn replace_second(self, second: u8) -> Result<Self, ComponentRange>Replace the seconds within the minute.
# use 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 datetime; assert_eq!;const fn replace_millisecond(self, millisecond: u16) -> Result<Self, ComponentRange>Replace the milliseconds within the second.
# use 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 datetime; assert_eq!;const fn replace_microsecond(self, microsecond: u32) -> Result<Self, ComponentRange>Replace the microseconds within the second.
# use 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 datetime; assert_eq!;const fn replace_nanosecond(self, nanosecond: u32) -> Result<Self, ComponentRange>Replace the nanoseconds within the second.
# use datetime; assert_eq!; assert!; // 1_000_000_000 isn't a valid nanosecond
impl OffsetDateTime
const UNIX_EPOCH: Self = _;Midnight, 1 January, 1970 (UTC).
# use OffsetDateTime; # use datetime; assert_eq!;fn now_utc() -> SelfCreate a new
OffsetDateTimewith the current date and time in UTC.# use OffsetDateTime; # use offset; assert!; assert_eq!;const fn new_in_offset(date: Date, time: Time, offset: UtcOffset) -> SelfCreate a new
OffsetDateTimewith the givenDate,Time, andUtcOffset.# use ; # use datetime; let dt = new_in_offset; assert_eq!; # Ok::const fn new_utc(date: Date, time: Time) -> SelfCreate a new
OffsetDateTimewith the givenDateandTimein the UTC timezone.# use ; # use datetime; let dt = new_utc; assert_eq!; # Ok::const fn to_offset(self, offset: UtcOffset) -> SelfConvert the
OffsetDateTimefrom the currentUtcOffsetto the providedUtcOffset.# use ; assert_eq!; // 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!; let new_york = sydney.to_offset; let los_angeles = sydney.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<Self>Convert the
OffsetDateTimefrom the currentUtcOffsetto the providedUtcOffset, returningNoneif the date-time in the resulting offset is invalid.# use PlainDateTime; # use ; assert_eq!; assert_eq!;const fn to_utc(self) -> UtcDateTimeConvert the
OffsetDateTimefrom the currentUtcOffsetto UTC, returning aUtcDateTime.# use datetime; assert_eq!;Panics
This method panics if the UTC date-time is outside the supported range.
const fn checked_to_utc(self) -> Option<UtcDateTime>Convert the
OffsetDateTimefrom the currentUtcOffsetto UTC, returningNoneif the UTC date-time is invalid. Returns aUtcDateTime.# use datetime; assert_eq!; assert_eq!;const fn from_unix_timestamp(timestamp: i64) -> Result<Self, ComponentRange>Create an
OffsetDateTimefrom the provided Unix timestamp. Calling.offset()on the resulting value is guaranteed to return UTC.# use OffsetDateTime; # use 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
OffsetDateTimefrom the provided Unix timestamp (in nanoseconds). Calling.offset()on the resulting value is guaranteed to return UTC.# use OffsetDateTime; # use datetime; assert_eq!; assert_eq!;const fn offset(self) -> UtcOffsetGet the
UtcOffset.# use ; assert_eq!; assert_eq!;const fn unix_timestamp(self) -> i64Get the Unix timestamp.
# use datetime; assert_eq!; assert_eq!;const fn unix_timestamp_nanos(self) -> i128Get the Unix timestamp in nanoseconds.
use datetime; assert_eq!; assert_eq!;const fn date(self) -> DateGet the
Datein the stored offset.# use ; assert_eq!; assert_eq!;const fn time(self) -> TimeGet the
Timein the stored offset.# use ; assert_eq!; assert_eq!;const fn year(self) -> i32Get the year of the date in the stored offset.
# use ; assert_eq!; assert_eq!; assert_eq!;const fn month(self) -> MonthGet the month of the date in the stored offset.
# use Month; # use ; assert_eq!; assert_eq!;const fn day(self) -> u8Get the day of the date in the stored offset.
The returned value will always be in the range
1..=31.# use ; assert_eq!; assert_eq!;const fn ordinal(self) -> u16Get the day of the year of the date in the stored offset.
The returned value will always be in the range
1..=366.# use ; assert_eq!; assert_eq!;const fn iso_week(self) -> u8Get the ISO week number of the date in the stored offset.
The returned value will always be in the range
1..=53.# use datetime; 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 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 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 datetime; assert_eq!;const fn to_ordinal_date(self) -> (i32, u16)Get the year and ordinal day number.
# use datetime; assert_eq!;const fn to_iso_week_date(self) -> (i32, u8, Weekday)Get the ISO 8601 year, week number, and weekday.
# use *; # use datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn weekday(self) -> WeekdayGet the weekday of the date in the stored offset.
# use *; # use datetime; 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 datetime; assert_eq!; assert_eq!; assert_eq!; assert_eq!;const fn to_hms(self) -> (u8, u8, u8)Get the clock hour, minute, and second.
# use datetime; assert_eq!; assert_eq!;const fn to_hms_milli(self) -> (u8, u8, u8, u16)Get the clock hour, minute, second, and millisecond.
# use datetime; assert_eq!; assert_eq!;const fn to_hms_micro(self) -> (u8, u8, u8, u32)Get the clock hour, minute, second, and microsecond.
# use datetime; assert_eq!; assert_eq!;const fn to_hms_nano(self) -> (u8, u8, u8, u32)Get the clock hour, minute, second, and nanosecond.
# use datetime; assert_eq!; assert_eq!;const fn hour(self) -> u8Get the clock hour in the stored offset.
The returned value will always be in the range
0..24.# use ; assert_eq!; assert_eq!;const fn minute(self) -> u8Get the minute within the hour in the stored offset.
The returned value will always be in the range
0..60.# use ; assert_eq!; assert_eq!;const fn second(self) -> u8Get the second within the minute in the stored offset.
The returned value will always be in the range
0..60.# use ; assert_eq!; assert_eq!;const fn millisecond(self) -> u16Get the milliseconds within the second in the stored offset.
The returned value will always be in the range
0..1_000.# use datetime; assert_eq!; assert_eq!;const fn microsecond(self) -> u32Get the microseconds within the second in the stored offset.
The returned value will always be in the range
0..1_000_000.# use datetime; assert_eq!; assert_eq!;const fn nanosecond(self) -> u32Get the nanoseconds within the second in the stored offset.
The returned value will always be in the range
0..1_000_000_000.# use datetime; assert_eq!; assert_eq!;const fn checked_add(self, duration: SignedDuration) -> Option<Self>Computes
self + duration, returningNoneif an overflow occurred.# use ; # use ; let datetime = MIN.midnight.assume_offset; assert_eq!; let datetime = MAX.midnight.assume_offset; assert_eq!; assert_eq!;const fn checked_sub(self, duration: SignedDuration) -> Option<Self>Computes
self - duration, returningNoneif an overflow occurred.# use ; # use ; let datetime = MIN.midnight.assume_offset; assert_eq!; let datetime = MAX.midnight.assume_offset; assert_eq!; assert_eq!;const fn saturating_add(self, duration: SignedDuration) -> SelfComputes
self + duration, saturating value on overflow.# use NumericalDuration; # use datetime; assert_eq!; assert_eq!; assert_eq!;const fn saturating_sub(self, duration: SignedDuration) -> SelfComputes
self - duration, saturating value on overflow.# use NumericalDuration; # use datetime; assert_eq!; assert_eq!; assert_eq!;
Trait Implementations
impl Add<Duration> for OffsetDateTime
type Output = OffsetDateTime;fn add(self, duration: StdDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Add<SignedDuration> for OffsetDateTime
type Output = OffsetDateTime;fn add(self, duration: SignedDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl AddAssign<Duration> for OffsetDateTime
fn add_assign(&mut self, rhs: StdDuration)Panics
This may panic if an overflow occurs.
impl AddAssign<SignedDuration> for OffsetDateTime
fn add_assign(&mut self, rhs: SignedDuration)Panics
This may panic if an overflow occurs.
impl Clone for OffsetDateTime
fn clone(&self) -> OffsetDateTime
impl Copy for OffsetDateTime
impl Debug for OffsetDateTime
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Display for OffsetDateTime
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Eq for OffsetDateTime
impl From<SystemTime> for OffsetDateTime
fn from(system_time: SystemTime) -> Self
impl From<Timestamp> for OffsetDateTime
fn from(timestamp: Timestamp) -> Self
impl From<UtcDateTime> for OffsetDateTime
fn from(datetime: UtcDateTime) -> SelfPanics
This may panic if an overflow occurs.
impl Hash for OffsetDateTime
fn hash<H>(&self, state: &mut H) where H: Hasher,
impl Ord for OffsetDateTime
fn cmp(&self, other: &Self) -> Ordering
impl PartialEq for OffsetDateTime
fn eq(&self, other: &Self) -> bool
impl PartialEq<SystemTime> for OffsetDateTime
fn eq(&self, rhs: &SystemTime) -> bool
impl PartialEq<Timestamp> for OffsetDateTime
fn eq(&self, other: &Timestamp) -> bool
impl PartialEq<UtcDateTime> for OffsetDateTime
fn eq(&self, other: &UtcDateTime) -> bool
impl PartialOrd for OffsetDateTime
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
impl PartialOrd<SystemTime> for OffsetDateTime
fn partial_cmp(&self, other: &SystemTime) -> Option<Ordering>
impl PartialOrd<Timestamp> for OffsetDateTime
fn partial_cmp(&self, other: &Timestamp) -> Option<Ordering>
impl PartialOrd<UtcDateTime> for OffsetDateTime
fn partial_cmp(&self, other: &UtcDateTime) -> Option<Ordering>
impl SmartDisplay for OffsetDateTime
type Metadata = ();fn metadata(&self, f: FormatterOptions) -> Metadata<'_, Self>fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Sub for OffsetDateTime
type Output = SignedDuration;fn sub(self, rhs: Self) -> Self::Output
impl Sub<Duration> for OffsetDateTime
type Output = OffsetDateTime;fn sub(self, duration: StdDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<SignedDuration> for OffsetDateTime
type Output = OffsetDateTime;fn sub(self, rhs: SignedDuration) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<SystemTime> for OffsetDateTime
type Output = SignedDuration;fn sub(self, rhs: SystemTime) -> Self::OutputPanics
This may panic if an overflow occurs.
impl Sub<Timestamp> for OffsetDateTime
type Output = SignedDuration;fn sub(self, rhs: Timestamp) -> Self::Output
impl Sub<UtcDateTime> for OffsetDateTime
type Output = SignedDuration;fn sub(self, rhs: UtcDateTime) -> Self::OutputPanics
This may panic if an overflow occurs.
impl SubAssign<Duration> for OffsetDateTime
fn sub_assign(&mut self, rhs: StdDuration)Panics
This may panic if an overflow occurs.
impl SubAssign<SignedDuration> for OffsetDateTime
fn sub_assign(&mut self, rhs: SignedDuration)Panics
This may panic if an overflow occurs.
Auto Trait Implementations
impl Freeze for OffsetDateTime
impl RefUnwindSafe for OffsetDateTime
impl Send for OffsetDateTime
impl Sync for OffsetDateTime
impl Unpin for OffsetDateTime
impl UnsafeUnpin for OffsetDateTime
impl UnwindSafe for OffsetDateTime
Blanket Implementations
impl<T> Any for OffsetDateTime
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for OffsetDateTime
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for OffsetDateTime
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for OffsetDateTime
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for OffsetDateTime
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for OffsetDateTime
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T> ToString for OffsetDateTime
where
T: Display + ?Sized,
fn to_string(&self) -> String
impl<T, U> Into<U> for OffsetDateTime
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 OffsetDateTime
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for OffsetDateTime
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>