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
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.
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
.
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
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
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
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>
This is supported on crate feature formatting
only.
pub fn format_into(
self,
output: &mut impl Write,
format: &impl Formattable
) -> Result<usize, Format>
formatting
only.Format the OffsetDateTime
using the provided format
description.
This is supported on crate feature formatting
only.
formatting
only.Format the OffsetDateTime
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!( 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 an OffsetDateTime
from the input 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!( 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
Performs the +=
operation. Read more
Performs the +=
operation. Read more
Deserialize this value from the given Serde deserializer. Read more
Generate a random value of T
, using rng
as the source of randomness.
Create an iterator that generates random values of T
, using rng
as
the source of randomness. Read more
Performs the conversion.
Performs the conversion.
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
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
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
Performs the -=
operation. Read more
Performs the -=
operation. Read more
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