Struct time::OffsetDateTime [−][src]
pub struct OffsetDateTime { /* fields omitted */ }
Expand description
A PrimitiveDateTime
with a UtcOffset
.
All comparisons are performed using the UTC time.
Implementations
Midnight, 1 January, 1970 (UTC).
assert_eq!(OffsetDateTime::UNIX_EPOCH, datetime!(1970-01-01 0:00 UTC),);Run
This is supported on crate feature std
only.
std
only.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));Run
This is supported on crate feature local-offset
only.
local-offset
only.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.
assert!(OffsetDateTime::now_local().is_ok());Run
Due to a soundness bug, the error value is currently always returned on Unix-like platforms.
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);Run
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)), );Run
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() );Run
Construct an OffsetDateTime
from the provided Unix timestamp (in nanoseconds). Calling
.offset()
on the resulting value is guaranteed to return UTC.
assert_eq!( OffsetDateTime::from_unix_timestamp_nanos(0), Ok(OffsetDateTime::UNIX_EPOCH), ); assert_eq!( OffsetDateTime::from_unix_timestamp_nanos(1_546_300_800_000_000_000), Ok(datetime!(2019-01-01 0:00 UTC)), );Run
Get the Unix timestamp.
assert_eq!(datetime!(1970-01-01 0:00 UTC).unix_timestamp(), 0); assert_eq!(datetime!(1970-01-01 0:00 -1).unix_timestamp(), 3_600);Run
Get the Unix timestamp in nanoseconds.
use time::macros::datetime; assert_eq!(datetime!(1970-01-01 0:00 UTC).unix_timestamp_nanos(), 0); assert_eq!( datetime!(1970-01-01 0:00 -1).unix_timestamp_nanos(), 3_600_000_000_000, );Run
Get the year of the date in the stored offset.
assert_eq!(datetime!(2019-01-01 0:00 UTC).year(), 2019); assert_eq!( datetime!(2019-12-31 23:00 UTC) .to_offset(offset!(+1)) .year(), 2020, ); assert_eq!(datetime!(2020-01-01 0:00 UTC).year(), 2020);Run
Get the month of the date in the stored offset.
The returned value will always be in the range 1..=12
.
assert_eq!(datetime!(2019-01-01 0:00 UTC).month(), Month::January); assert_eq!( datetime!(2019-12-31 23:00 UTC) .to_offset(offset!(+1)) .month(), Month::January, );Run
Get the day of the date in the stored offset.
The returned value will always be in the range 1..=31
.
assert_eq!(datetime!(2019-01-01 0:00 UTC).day(), 1); assert_eq!( datetime!(2019-12-31 23:00 UTC) .to_offset(offset!(+1)) .day(), 1, );Run
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!(datetime!(2019-01-01 0:00 UTC).ordinal(), 1); assert_eq!( datetime!(2019-12-31 23:00 UTC) .to_offset(offset!(+1)) .ordinal(), 1, );Run
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!(datetime!(2019-01-01 0:00 UTC).iso_week(), 1); assert_eq!(datetime!(2020-01-01 0:00 UTC).iso_week(), 1); assert_eq!(datetime!(2020-12-31 0:00 UTC).iso_week(), 53); assert_eq!(datetime!(2021-01-01 0:00 UTC).iso_week(), 53);Run
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!(datetime!(2019-01-01 0:00 UTC).sunday_based_week(), 0); assert_eq!(datetime!(2020-01-01 0:00 UTC).sunday_based_week(), 0); assert_eq!(datetime!(2020-12-31 0:00 UTC).sunday_based_week(), 52); assert_eq!(datetime!(2021-01-01 0:00 UTC).sunday_based_week(), 0);Run
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!(datetime!(2019-01-01 0:00 UTC).monday_based_week(), 0); assert_eq!(datetime!(2020-01-01 0:00 UTC).monday_based_week(), 0); assert_eq!(datetime!(2020-12-31 0:00 UTC).monday_based_week(), 52); assert_eq!(datetime!(2021-01-01 0:00 UTC).monday_based_week(), 0);Run
Get the year, month, and day.
assert_eq!( datetime!(2019-01-01 0:00 UTC).to_calendar_date(), (2019, Month::January, 1) );Run
Get the year and ordinal day number.
assert_eq!( datetime!(2019-01-01 0:00 UTC).to_ordinal_date(), (2019, 1) );Run
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) );Run
Get the weekday of the date in the stored offset.
assert_eq!(datetime!(2019-01-01 0:00 UTC).weekday(), Tuesday); assert_eq!(datetime!(2019-02-01 0:00 UTC).weekday(), Friday); assert_eq!(datetime!(2019-03-01 0:00 UTC).weekday(), Friday);Run
Get the Julian day for the date. The time is not taken into account for this calculation.
The algorithm to perform this conversion is derived from one provided by Peter Baum; it is freely available here.
assert_eq!(datetime!(-4713-11-24 0:00 UTC).to_julian_day(), 0); assert_eq!(datetime!(2000-01-01 0:00 UTC).to_julian_day(), 2_451_545); assert_eq!(datetime!(2019-01-01 0:00 UTC).to_julian_day(), 2_458_485); assert_eq!(datetime!(2019-12-31 0:00 UTC).to_julian_day(), 2_458_849);Run
Get the clock hour, minute, and second.
assert_eq!(datetime!(2020-01-01 0:00:00 UTC).to_hms(), (0, 0, 0)); assert_eq!(datetime!(2020-01-01 23:59:59 UTC).to_hms(), (23, 59, 59));Run
Get the clock hour, minute, second, and millisecond.
assert_eq!( datetime!(2020-01-01 0:00:00 UTC).to_hms_milli(), (0, 0, 0, 0) ); assert_eq!( datetime!(2020-01-01 23:59:59.999 UTC).to_hms_milli(), (23, 59, 59, 999) );Run
Get the clock hour, minute, second, and microsecond.
assert_eq!( datetime!(2020-01-01 0:00:00 UTC).to_hms_micro(), (0, 0, 0, 0) ); assert_eq!( datetime!(2020-01-01 23:59:59.999_999 UTC).to_hms_micro(), (23, 59, 59, 999_999) );Run
Get the clock hour, minute, second, and nanosecond.
assert_eq!( datetime!(2020-01-01 0:00:00 UTC).to_hms_nano(), (0, 0, 0, 0) ); assert_eq!( datetime!(2020-01-01 23:59:59.999_999_999 UTC).to_hms_nano(), (23, 59, 59, 999_999_999) );Run
Get the clock hour in the stored offset.
The returned value will always be in the range 0..24
.
assert_eq!(datetime!(2019-01-01 0:00 UTC).hour(), 0); assert_eq!( datetime!(2019-01-01 23:59:59 UTC) .to_offset(offset!(-2)) .hour(), 21, );Run
Get the minute within the hour in the stored offset.
The returned value will always be in the range 0..60
.
assert_eq!(datetime!(2019-01-01 0:00 UTC).minute(), 0); assert_eq!( datetime!(2019-01-01 23:59:59 UTC) .to_offset(offset!(+0:30)) .minute(), 29, );Run
Get the second within the minute in the stored offset.
The returned value will always be in the range 0..60
.
assert_eq!(datetime!(2019-01-01 0:00 UTC).second(), 0); assert_eq!( datetime!(2019-01-01 23:59:59 UTC) .to_offset(offset!(+0:00:30)) .second(), 29, );Run
Get the milliseconds within the second in the stored offset.
The returned value will always be in the range 0..1_000
.
assert_eq!(datetime!(2019-01-01 0:00 UTC).millisecond(), 0); assert_eq!(datetime!(2019-01-01 23:59:59.999 UTC).millisecond(), 999);Run
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!(datetime!(2019-01-01 0:00 UTC).microsecond(), 0); assert_eq!( datetime!(2019-01-01 23:59:59.999_999 UTC).microsecond(), 999_999, );Run
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!(datetime!(2019-01-01 0:00 UTC).nanosecond(), 0); assert_eq!( datetime!(2019-01-01 23:59:59.999_999_999 UTC).nanosecond(), 999_999_999, );Run
Methods that replace part of the OffsetDateTime
.
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_time(self, time: Time) -> Self
[src]
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_time(self, time: Time) -> Self
[src]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) );Run
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_date(self, date: Date) -> Self
[src]
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_date(self, date: Date) -> Self
[src]Replace the date, which is assumed to be in the stored offset. The time and offset components are unchanged.
assert_eq!( datetime!(2020-01-01 12:00 UTC).replace_date(date!(2020-01-30)), datetime!(2020-01-30 12:00 UTC) ); assert_eq!( datetime!(2020-01-01 0:00 +1).replace_date(date!(2020-01-30)), datetime!(2020-01-30 0:00 +1) );Run
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_date_time(self, date_time: PrimitiveDateTime) -> Self
[src]
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_date_time(self, date_time: PrimitiveDateTime) -> Self
[src]Replace the date and time, which are assumed to be in the stored offset. The offset component remains unchanged.
assert_eq!( datetime!(2020-01-01 12:00 UTC).replace_date_time(datetime!(2020-01-30 16:00)), datetime!(2020-01-30 16:00 UTC) ); assert_eq!( datetime!(2020-01-01 12:00 +1).replace_date_time(datetime!(2020-01-30 0:00)), datetime!(2020-01-30 0:00 +1) );Run
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_offset(self, offset: UtcOffset) -> Self
[src]
#[must_use = "This method does not mutate the original `OffsetDateTime`."]pub const fn replace_offset(self, offset: UtcOffset) -> Self
[src]Replace the offset. The date and time components remain unchanged.
assert_eq!( datetime!(2020-01-01 0:00 UTC).replace_offset(offset!(-5)), datetime!(2020-01-01 0:00 -5) );Run
pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
[src]This is supported on crate feature formatting
only.
pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
[src]formatting
only.Format the OffsetDateTime
using the provided format description. The formatted value will
be output to the provided writer. The format description will typically be parsed by using
format_description::parse
.
This is supported on crate feature formatting
only.
formatting
only.Format the OffsetDateTime
using the provided format description. The format description
will typically be parsed by using
format_description::parse
.
let format = format_description::parse( "[year]-[month]-[day] [hour]:[minute]:[second] [offset_hour \ sign:mandatory]:[offset_minute]:[offset_second]", )?; assert_eq!( datetime!(2020-01-02 03:04:05 +06:07:08).format(&format)?, "2020-01-02 03:04:05 +06:07:08" );Run
This is supported on crate feature parsing
only.
parsing
only.Parse a PrimitiveDateTime
from the input using the provided format description. The format
description will typically be parsed by using
format_description::parse
.
let format = format_description::parse( "[year]-[month]-[day] [hour]:[minute]:[second] [offset_hour \ sign:mandatory]:[offset_minute]:[offset_second]", )?; assert_eq!( OffsetDateTime::parse("2020-01-02 03:04:05 +06:07:08", &format)?, datetime!(2020-01-02 03:04:05 +06:07:08) );Run
Trait Implementations
impl<T> Add<T> for OffsetDateTime where
PrimitiveDateTime: Add<T, Output = PrimitiveDateTime>,
[src]
impl<T> Add<T> for OffsetDateTime where
PrimitiveDateTime: Add<T, Output = PrimitiveDateTime>,
[src]Performs the +=
operation. Read more
quickcheck
only.serde
only.Deserialize this value from the given Serde deserializer. Read more
std
only.Performs the conversion.
std
only.This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
std
only.This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
serde
only.std
only.impl<T> Sub<T> for OffsetDateTime where
PrimitiveDateTime: Sub<T, Output = PrimitiveDateTime>,
[src]
impl<T> Sub<T> for OffsetDateTime where
PrimitiveDateTime: Sub<T, Output = PrimitiveDateTime>,
[src]Performs the -=
operation. Read more
parsing
only.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
Mutably borrows from an owned value. Read more