Struct time::OffsetDateTime
source · [−]pub struct OffsetDateTime { /* private fields */ }
Expand description
A PrimitiveDateTime
with a UtcOffset
.
All comparisons are performed using the UTC time.
Implementations
sourceimpl OffsetDateTime
impl OffsetDateTime
sourcepub fn now() -> Self
👎 Deprecated since 0.2.11: This function returns a value with an offset of UTC, which is not apparent from its name alone. You should use OffsetDateTime::now_utc()
instead.
pub fn now() -> Self
This function returns a value with an offset of UTC, which is not apparent from its name alone. You should use OffsetDateTime::now_utc()
instead.
Create a new OffsetDateTime
with the current date and time in UTC.
assert!(OffsetDateTime::now().year() >= 2019);
assert_eq!(OffsetDateTime::now().offset(), offset!(UTC));
sourcepub fn now_utc() -> Self
pub fn now_utc() -> Self
Create a new OffsetDateTime
with the current date and time in UTC.
assert!(OffsetDateTime::now_utc().year() >= 2019);
assert_eq!(OffsetDateTime::now_utc().offset(), offset!(UTC));
sourcepub fn now_local() -> Self
👎 Deprecated since 0.2.23: UTC is returned if the local offset cannot be determined
pub fn now_local() -> Self
UTC is returned if the local offset cannot be determined
Create a new OffsetDateTime
with the current date and time in the
local offset.
assert!(OffsetDateTime::now_local().year() >= 2019);
sourcepub fn try_now_local() -> Result<Self, IndeterminateOffset>
pub fn try_now_local() -> Result<Self, IndeterminateOffset>
Attempt to create a new OffsetDateTime
with the current date and time
in the local offset. If the offset cannot be determined, an error is
returned.
let now = OffsetDateTime::try_now_local();
assert!(now.is_ok());
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!(
date!(2000-01-01)
.midnight()
.assume_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. This is equivalent to
// 13:00 UTC.
let sydney = date!(2000-01-01).midnight().assume_offset(offset!(+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);
sourcepub const fn unix_epoch() -> Self
pub const fn unix_epoch() -> Self
Midnight, 1 January, 1970 (UTC).
assert_eq!(
OffsetDateTime::unix_epoch(),
date!(1970-01-01)
.midnight()
.assume_utc(),
);
sourcepub fn from_unix_timestamp(timestamp: i64) -> Self
pub fn from_unix_timestamp(timestamp: i64) -> Self
Create an OffsetDateTime
from the provided Unix timestamp.
assert_eq!(
OffsetDateTime::from_unix_timestamp(0),
OffsetDateTime::unix_epoch(),
);
assert_eq!(
OffsetDateTime::from_unix_timestamp(1_546_300_800),
date!(2019-01-01)
.midnight()
.assume_utc(),
);
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!(
OffsetDateTime::from_unix_timestamp(timestamp) + Duration::nanoseconds(nanos),
OffsetDateTime::unix_epoch() + 1.5.seconds()
);
sourcepub fn from_unix_timestamp_nanos(timestamp: i128) -> Self
pub fn from_unix_timestamp_nanos(timestamp: i128) -> Self
Construct an OffsetDateTime
from the provided Unix timestamp (in
nanoseconds).
assert_eq!(
OffsetDateTime::from_unix_timestamp_nanos(0),
OffsetDateTime::unix_epoch(),
);
assert_eq!(
OffsetDateTime::from_unix_timestamp_nanos(1_546_300_800_000_000_000),
date!(2019-01-01)
.midnight()
.assume_utc(),
);
Note that the range of timestamps possible here is far larger than the valid range of dates storable in this crate. It is the user’s responsibility to ensure the timestamp provided as a parameter is valid. No behavior is guaranteed if this parameter would not result in a valid value.
sourcepub const fn offset(self) -> UtcOffset
pub const fn offset(self) -> UtcOffset
Get the UtcOffset
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.offset(),
offset!(UTC),
);
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_offset(offset!(+1))
.offset(),
offset!(+1),
);
sourcepub fn unix_timestamp(self) -> i64
pub fn unix_timestamp(self) -> i64
Get the Unix timestamp.
assert_eq!(
date!(1970-01-01)
.midnight()
.assume_utc()
.unix_timestamp(),
0,
);
assert_eq!(
date!(1970-01-01)
.midnight()
.assume_utc()
.to_offset(offset!(-1))
.unix_timestamp(),
0,
);
sourcepub fn timestamp(self) -> i64
👎 Deprecated since 0.2.23: Use OffsetDateTime::unix_timestamp
instead
pub fn timestamp(self) -> i64
Use OffsetDateTime::unix_timestamp
instead
Get the Unix timestamp.
assert_eq!(
date!(1970-01-01)
.midnight()
.assume_utc()
.timestamp(),
0,
);
assert_eq!(
date!(1970-01-01)
.midnight()
.assume_utc()
.to_offset(offset!(-1))
.timestamp(),
0,
);
sourcepub fn unix_timestamp_nanos(self) -> i128
pub fn unix_timestamp_nanos(self) -> i128
Get the Unix timestamp in nanoseconds.
use time::{date, offset, time};
assert_eq!(
date!(1970-01-01)
.midnight()
.assume_utc()
.unix_timestamp_nanos(),
0,
);
assert_eq!(
date!(1970-01-01)
.with_time(time!(1:00))
.assume_utc()
.to_offset(offset!(-1))
.unix_timestamp_nanos(),
3_600_000_000_000,
);
sourcepub fn timestamp_nanos(self) -> i128
👎 Deprecated since 0.2.23: Use OffsetDateTime::unix_timestamp_nanos
instead
pub fn timestamp_nanos(self) -> i128
Use OffsetDateTime::unix_timestamp_nanos
instead
Get the Unix timestamp in nanoseconds.
use time::{date, offset, time};
assert_eq!(
date!(1970-01-01)
.midnight()
.assume_utc()
.unix_timestamp_nanos(),
0,
);
assert_eq!(
date!(1970-01-01)
.with_time(time!(1:00))
.assume_utc()
.to_offset(offset!(-1))
.unix_timestamp_nanos(),
3_600_000_000_000,
);
sourcepub fn date(self) -> Date
pub fn date(self) -> Date
Get the Date
in the stored offset.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.date(),
date!(2019-01-01),
);
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.to_offset(offset!(-1))
.date(),
date!(2018-12-31),
);
sourcepub fn time(self) -> Time
pub fn time(self) -> Time
Get the Time
in the stored offset.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.time(),
time!(0:00)
);
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.to_offset(offset!(-1))
.time(),
time!(23:00)
);
sourcepub fn year(self) -> i32
pub fn year(self) -> i32
Get the year of the date in the stored offset.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.year(),
2019,
);
assert_eq!(
date!(2019-12-31)
.with_time(time!(23:00))
.assume_utc()
.to_offset(offset!(+1))
.year(),
2020,
);
assert_eq!(
date!(2020-01-01)
.midnight()
.assume_utc()
.year(),
2020,
);
sourcepub fn month(self) -> u8
pub fn month(self) -> u8
Get the month of the date in the stored offset. If fetching both the
month and day, it is more efficient to use
OffsetDateTime::month_day
.
The returned value will always be in the range 1..=12
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.month(),
1,
);
assert_eq!(
date!(2019-12-31)
.with_time(time!(23:00))
.assume_utc()
.to_offset(offset!(+1))
.month(),
1,
);
sourcepub fn day(self) -> u8
pub fn day(self) -> u8
Get the day of the date in the stored offset. If fetching both the month
and day, it is more efficient to use OffsetDateTime::month_day
.
The returned value will always be in the range 1..=31
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.day(),
1,
);
assert_eq!(
date!(2019-12-31)
.with_time(time!(23:00))
.assume_utc()
.to_offset(offset!(+1))
.day(),
1,
);
sourcepub fn month_day(self) -> (u8, u8)
pub fn month_day(self) -> (u8, u8)
Get the month and day of the date in the stored offset.
The month component will always be in the range 1..=12
;
the day component in 1..=31
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.month_day(),
(1, 1),
);
assert_eq!(
date!(2019-12-31)
.with_time(time!(23:00))
.assume_utc()
.to_offset(offset!(+1))
.month_day(),
(1, 1),
);
sourcepub fn ordinal(self) -> u16
pub fn ordinal(self) -> u16
Get the day of the year of the date in the stored offset.
The returned value will always be in the range 1..=366
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.ordinal(),
1,
);
assert_eq!(
date!(2019-12-31)
.with_time(time!(23:00))
.assume_utc()
.to_offset(offset!(+1))
.ordinal(),
1,
);
sourcepub fn iso_year_week(self) -> (i32, u8)
pub fn iso_year_week(self) -> (i32, u8)
Get the ISO 8601 year and week number in the stored offset.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.iso_year_week(),
(2019, 1),
);
assert_eq!(
date!(2019-10-04)
.midnight()
.assume_utc()
.iso_year_week(),
(2019, 40),
);
assert_eq!(
date!(2020-01-01)
.midnight()
.assume_utc()
.iso_year_week(),
(2020, 1),
);
assert_eq!(
date!(2020-12-31)
.midnight()
.assume_utc()
.iso_year_week(),
(2020, 53),
);
assert_eq!(
date!(2021-01-01)
.midnight()
.assume_utc()
.iso_year_week(),
(2020, 53),
);
sourcepub fn week(self) -> u8
pub fn 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
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.week(),
1,
);
assert_eq!(
date!(2020-01-01)
.midnight()
.assume_utc()
.week(),
1,
);
assert_eq!(
date!(2020-12-31)
.midnight()
.assume_utc()
.week(),
53,
);
assert_eq!(
date!(2021-01-01)
.midnight()
.assume_utc()
.week(),
53,
);
sourcepub fn weekday(self) -> Weekday
pub fn weekday(self) -> Weekday
Get the weekday of the date in the stored offset.
This current uses Zeller’s congruence internally.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.weekday(),
Tuesday,
);
assert_eq!(
date!(2019-02-01)
.midnight()
.assume_utc()
.weekday(),
Friday,
);
assert_eq!(
date!(2019-03-01)
.midnight()
.assume_utc()
.weekday(),
Friday,
);
sourcepub fn hour(self) -> u8
pub fn hour(self) -> u8
Get the clock hour in the stored offset.
The returned value will always be in the range 0..24
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.hour(),
0,
);
assert_eq!(
date!(2019-01-01)
.with_time(time!(23:59:59))
.assume_utc()
.to_offset(offset!(-2))
.hour(),
21,
);
sourcepub fn minute(self) -> u8
pub fn minute(self) -> u8
Get the minute within the hour in the stored offset.
The returned value will always be in the range 0..60
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.minute(),
0,
);
assert_eq!(
date!(2019-01-01)
.with_time(time!(23:59:59))
.assume_utc()
.to_offset(offset!(+0:30))
.minute(),
29,
);
sourcepub fn second(self) -> u8
pub fn second(self) -> u8
Get the second within the minute in the stored offset.
The returned value will always be in the range 0..60
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.second(),
0,
);
assert_eq!(
date!(2019-01-01)
.with_time(time!(23:59:59))
.assume_utc()
.to_offset(offset!(+0:00:30))
.second(),
29,
);
sourcepub fn millisecond(self) -> u16
pub fn millisecond(self) -> u16
Get the milliseconds within the second in the stored offset.
The returned value will always be in the range 0..1_000
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.millisecond(),
0,
);
assert_eq!(
date!(2019-01-01)
.with_time(time!(23:59:59.999))
.assume_utc()
.millisecond(),
999,
);
sourcepub fn microsecond(self) -> u32
pub fn microsecond(self) -> u32
Get the microseconds within the second in the stored offset.
The returned value will always be in the range 0..1_000_000
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.microsecond(),
0,
);
assert_eq!(
date!(2019-01-01)
.with_time(time!(23:59:59.999_999))
.assume_utc()
.microsecond(),
999_999,
);
sourcepub fn nanosecond(self) -> u32
pub fn nanosecond(self) -> u32
Get the nanoseconds within the second in the stored offset.
The returned value will always be in the range 0..1_000_000_000
.
assert_eq!(
date!(2019-01-01)
.midnight()
.assume_utc()
.nanosecond(),
0,
);
assert_eq!(
date!(2019-01-01)
.with_time(time!(23:59:59.999_999_999))
.assume_utc()
.nanosecond(),
999_999_999,
);
sourceimpl OffsetDateTime
impl OffsetDateTime
Methods that allow formatting the OffsetDateTime
.
sourcepub fn format(self, format: impl Into<Format>) -> String
pub fn format(self, format: impl Into<Format>) -> String
Format the OffsetDateTime
using the provided string.
assert_eq!(
date!(2019-01-02)
.midnight()
.assume_utc()
.format("%F %r %z"),
"2019-01-02 12:00:00 am +0000",
);
sourcepub fn lazy_format(self, format: impl Into<Format>) -> impl Display
pub fn lazy_format(self, format: impl Into<Format>) -> impl Display
Format the OffsetDateTime
using the provided string.
assert_eq!(
date!(2019-01-02)
.midnight()
.assume_utc()
.lazy_format("%F %r %z")
.to_string(),
"2019-01-02 12:00:00 am +0000",
);
sourcepub fn parse(
s: impl AsRef<str>,
format: impl Into<Format>
) -> Result<Self, Error>
pub fn parse(
s: impl AsRef<str>,
format: impl Into<Format>
) -> Result<Self, Error>
Attempt to parse an OffsetDateTime
using the provided string.
assert_eq!(
OffsetDateTime::parse("2019-01-02 00:00:00 +0000", "%F %T %z"),
Ok(date!(2019-01-02).midnight().assume_utc()),
);
assert_eq!(
OffsetDateTime::parse("2019-002 23:59:59 +0000", "%Y-%j %T %z"),
Ok(date!(2019-002).with_time(time!(23:59:59)).assume_utc()),
);
assert_eq!(
OffsetDateTime::parse("2019-W01-3 12:00:00 pm +0000", "%G-W%V-%u %r %z"),
Ok(date!(2019-W01-3).with_time(time!(12:00)).assume_utc()),
);
Trait Implementations
sourceimpl Add<Duration> for OffsetDateTime
impl Add<Duration> for OffsetDateTime
sourceimpl Add<Duration> for OffsetDateTime
impl Add<Duration> for OffsetDateTime
sourceimpl AddAssign<Duration> for OffsetDateTime
impl AddAssign<Duration> for OffsetDateTime
sourcefn add_assign(&mut self, duration: Duration)
fn add_assign(&mut self, duration: Duration)
Performs the +=
operation. Read more
sourceimpl AddAssign<Duration> for OffsetDateTime
impl AddAssign<Duration> for OffsetDateTime
sourcefn add_assign(&mut self, duration: StdDuration)
fn add_assign(&mut self, duration: StdDuration)
Performs the +=
operation. Read more
sourceimpl Clone for OffsetDateTime
impl Clone for OffsetDateTime
sourcefn clone(&self) -> OffsetDateTime
fn clone(&self) -> OffsetDateTime
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for OffsetDateTime
impl Debug for OffsetDateTime
sourceimpl Display for OffsetDateTime
impl Display for OffsetDateTime
sourceimpl From<OffsetDateTime> for SystemTime
impl From<OffsetDateTime> for SystemTime
sourcefn from(datetime: OffsetDateTime) -> Self
fn from(datetime: OffsetDateTime) -> Self
Performs the conversion.
sourceimpl From<SystemTime> for OffsetDateTime
impl From<SystemTime> for OffsetDateTime
sourcefn from(system_time: SystemTime) -> Self
fn from(system_time: SystemTime) -> Self
Performs the conversion.
sourceimpl Hash for OffsetDateTime
impl Hash for OffsetDateTime
sourceimpl Ord for OffsetDateTime
impl Ord for OffsetDateTime
sourceimpl PartialEq<OffsetDateTime> for OffsetDateTime
impl PartialEq<OffsetDateTime> for OffsetDateTime
sourceimpl PartialEq<OffsetDateTime> for SystemTime
impl PartialEq<OffsetDateTime> for SystemTime
sourceimpl PartialEq<SystemTime> for OffsetDateTime
impl PartialEq<SystemTime> for OffsetDateTime
sourceimpl PartialOrd<OffsetDateTime> for OffsetDateTime
impl PartialOrd<OffsetDateTime> for OffsetDateTime
sourcefn partial_cmp(&self, rhs: &Self) -> Option<Ordering>
fn partial_cmp(&self, rhs: &Self) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl PartialOrd<OffsetDateTime> for SystemTime
impl PartialOrd<OffsetDateTime> for SystemTime
sourcefn partial_cmp(&self, other: &OffsetDateTime) -> Option<Ordering>
fn partial_cmp(&self, other: &OffsetDateTime) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl PartialOrd<SystemTime> for OffsetDateTime
impl PartialOrd<SystemTime> for OffsetDateTime
sourcefn partial_cmp(&self, other: &SystemTime) -> Option<Ordering>
fn partial_cmp(&self, other: &SystemTime) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl Sub<Duration> for OffsetDateTime
impl Sub<Duration> for OffsetDateTime
sourceimpl Sub<Duration> for OffsetDateTime
impl Sub<Duration> for OffsetDateTime
sourceimpl Sub<OffsetDateTime> for OffsetDateTime
impl Sub<OffsetDateTime> for OffsetDateTime
sourceimpl Sub<OffsetDateTime> for SystemTime
impl Sub<OffsetDateTime> for SystemTime
sourceimpl Sub<SystemTime> for OffsetDateTime
impl Sub<SystemTime> for OffsetDateTime
sourceimpl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for OffsetDateTime
sourcefn sub_assign(&mut self, duration: Duration)
fn sub_assign(&mut self, duration: Duration)
Performs the -=
operation. Read more
sourceimpl SubAssign<Duration> for OffsetDateTime
impl SubAssign<Duration> for OffsetDateTime
sourcefn sub_assign(&mut self, duration: StdDuration)
fn sub_assign(&mut self, duration: StdDuration)
Performs the -=
operation. Read more
impl Copy for OffsetDateTime
impl Eq for OffsetDateTime
impl StructuralEq for OffsetDateTime
Auto Trait Implementations
impl RefUnwindSafe for OffsetDateTime
impl Send for OffsetDateTime
impl Sync for OffsetDateTime
impl Unpin for OffsetDateTime
impl UnwindSafe for OffsetDateTime
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more