pub trait TimeZone: Sized + Clone {
type Offset: Offset;
Show 23 methods
// Required methods
fn from_offset(offset: &Self::Offset) -> Self;
fn offset_from_local_date(
&self,
local: &NaiveDate,
) -> LocalResult<Self::Offset>;
fn offset_from_local_datetime(
&self,
local: &NaiveDateTime,
) -> LocalResult<Self::Offset>;
fn offset_from_utc_date(&self, utc: &NaiveDate) -> Self::Offset;
fn offset_from_utc_datetime(&self, utc: &NaiveDateTime) -> Self::Offset;
// Provided methods
fn with_ymd_and_hms(
&self,
year: i32,
month: u32,
day: u32,
hour: u32,
min: u32,
sec: u32,
) -> LocalResult<DateTime<Self>> { ... }
fn ymd(&self, year: i32, month: u32, day: u32) -> Date<Self> { ... }
fn ymd_opt(
&self,
year: i32,
month: u32,
day: u32,
) -> LocalResult<Date<Self>> { ... }
fn yo(&self, year: i32, ordinal: u32) -> Date<Self> { ... }
fn yo_opt(&self, year: i32, ordinal: u32) -> LocalResult<Date<Self>> { ... }
fn isoywd(&self, year: i32, week: u32, weekday: Weekday) -> Date<Self> { ... }
fn isoywd_opt(
&self,
year: i32,
week: u32,
weekday: Weekday,
) -> LocalResult<Date<Self>> { ... }
fn timestamp(&self, secs: i64, nsecs: u32) -> DateTime<Self> { ... }
fn timestamp_opt(
&self,
secs: i64,
nsecs: u32,
) -> LocalResult<DateTime<Self>> { ... }
fn timestamp_millis(&self, millis: i64) -> DateTime<Self> { ... }
fn timestamp_millis_opt(&self, millis: i64) -> LocalResult<DateTime<Self>> { ... }
fn timestamp_nanos(&self, nanos: i64) -> DateTime<Self> { ... }
fn timestamp_micros(&self, micros: i64) -> LocalResult<DateTime<Self>> { ... }
fn datetime_from_str(
&self,
s: &str,
fmt: &str,
) -> ParseResult<DateTime<Self>> { ... }
fn from_local_date(&self, local: &NaiveDate) -> LocalResult<Date<Self>> { ... }
fn from_local_datetime(
&self,
local: &NaiveDateTime,
) -> LocalResult<DateTime<Self>> { ... }
fn from_utc_date(&self, utc: &NaiveDate) -> Date<Self> { ... }
fn from_utc_datetime(&self, utc: &NaiveDateTime) -> DateTime<Self> { ... }
}
Expand description
The time zone.
The methods here are the primary constructors for the DateTime
type.
Required Associated Types§
Required Methods§
Sourcefn from_offset(offset: &Self::Offset) -> Self
fn from_offset(offset: &Self::Offset) -> Self
Reconstructs the time zone from the offset.
Sourcefn offset_from_local_date(&self, local: &NaiveDate) -> LocalResult<Self::Offset>
fn offset_from_local_date(&self, local: &NaiveDate) -> LocalResult<Self::Offset>
Creates the offset(s) for given local NaiveDate
if possible.
Sourcefn offset_from_local_datetime(
&self,
local: &NaiveDateTime,
) -> LocalResult<Self::Offset>
fn offset_from_local_datetime( &self, local: &NaiveDateTime, ) -> LocalResult<Self::Offset>
Creates the offset(s) for given local NaiveDateTime
if possible.
Sourcefn offset_from_utc_date(&self, utc: &NaiveDate) -> Self::Offset
fn offset_from_utc_date(&self, utc: &NaiveDate) -> Self::Offset
Creates the offset for given UTC NaiveDate
. This cannot fail.
Sourcefn offset_from_utc_datetime(&self, utc: &NaiveDateTime) -> Self::Offset
fn offset_from_utc_datetime(&self, utc: &NaiveDateTime) -> Self::Offset
Creates the offset for given UTC NaiveDateTime
. This cannot fail.
Provided Methods§
Sourcefn with_ymd_and_hms(
&self,
year: i32,
month: u32,
day: u32,
hour: u32,
min: u32,
sec: u32,
) -> LocalResult<DateTime<Self>>
fn with_ymd_and_hms( &self, year: i32, month: u32, day: u32, hour: u32, min: u32, sec: u32, ) -> LocalResult<DateTime<Self>>
Make a new DateTime
from year, month, day, time components and current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
Returns LocalResult::None
on invalid input data.
Sourcefn ymd(&self, year: i32, month: u32, day: u32) -> Date<Self>
👎Deprecated since 0.4.23: use with_ymd_and_hms()
instead
fn ymd(&self, year: i32, month: u32, day: u32) -> Date<Self>
with_ymd_and_hms()
insteadMakes a new Date
from year, month, day and the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),
but it will propagate to the DateTime
values constructed via this date.
Panics on the out-of-range date, invalid month and/or day.
Sourcefn ymd_opt(&self, year: i32, month: u32, day: u32) -> LocalResult<Date<Self>>
👎Deprecated since 0.4.23: use with_ymd_and_hms()
instead
fn ymd_opt(&self, year: i32, month: u32, day: u32) -> LocalResult<Date<Self>>
with_ymd_and_hms()
insteadMakes a new Date
from year, month, day and the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),
but it will propagate to the DateTime
values constructed via this date.
Returns None
on the out-of-range date, invalid month and/or day.
Sourcefn yo(&self, year: i32, ordinal: u32) -> Date<Self>
👎Deprecated since 0.4.23: use from_local_datetime()
with a NaiveDateTime
instead
fn yo(&self, year: i32, ordinal: u32) -> Date<Self>
from_local_datetime()
with a NaiveDateTime
insteadMakes a new Date
from year, day of year (DOY or “ordinal”) and the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),
but it will propagate to the DateTime
values constructed via this date.
Panics on the out-of-range date and/or invalid DOY.
Sourcefn yo_opt(&self, year: i32, ordinal: u32) -> LocalResult<Date<Self>>
👎Deprecated since 0.4.23: use from_local_datetime()
with a NaiveDateTime
instead
fn yo_opt(&self, year: i32, ordinal: u32) -> LocalResult<Date<Self>>
from_local_datetime()
with a NaiveDateTime
insteadMakes a new Date
from year, day of year (DOY or “ordinal”) and the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),
but it will propagate to the DateTime
values constructed via this date.
Returns None
on the out-of-range date and/or invalid DOY.
Sourcefn isoywd(&self, year: i32, week: u32, weekday: Weekday) -> Date<Self>
👎Deprecated since 0.4.23: use from_local_datetime()
with a NaiveDateTime
instead
fn isoywd(&self, year: i32, week: u32, weekday: Weekday) -> Date<Self>
from_local_datetime()
with a NaiveDateTime
insteadMakes a new Date
from ISO week date (year and week number), day of the week (DOW) and
the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
The resulting Date
may have a different year from the input year.
The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),
but it will propagate to the DateTime
values constructed via this date.
Panics on the out-of-range date and/or invalid week number.
Sourcefn isoywd_opt(
&self,
year: i32,
week: u32,
weekday: Weekday,
) -> LocalResult<Date<Self>>
👎Deprecated since 0.4.23: use from_local_datetime()
with a NaiveDateTime
instead
fn isoywd_opt( &self, year: i32, week: u32, weekday: Weekday, ) -> LocalResult<Date<Self>>
from_local_datetime()
with a NaiveDateTime
insteadMakes a new Date
from ISO week date (year and week number), day of the week (DOW) and
the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE.
The resulting Date
may have a different year from the input year.
The time zone normally does not affect the date (unless it is between UTC-24 and UTC+24),
but it will propagate to the DateTime
values constructed via this date.
Returns None
on the out-of-range date and/or invalid week number.
Sourcefn timestamp(&self, secs: i64, nsecs: u32) -> DateTime<Self>
👎Deprecated since 0.4.23: use timestamp_opt()
instead
fn timestamp(&self, secs: i64, nsecs: u32) -> DateTime<Self>
timestamp_opt()
insteadMakes a new DateTime
from the number of non-leap seconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”)
and the number of nanoseconds since the last whole non-leap second.
The nanosecond part can exceed 1,000,000,000 in order to represent a
leap second, but only when secs % 60 == 59
.
(The true “UNIX timestamp” cannot represent a leap second unambiguously.)
§Panics
Panics on the out-of-range number of seconds and/or invalid nanosecond,
for a non-panicking version see timestamp_opt
.
Sourcefn timestamp_opt(&self, secs: i64, nsecs: u32) -> LocalResult<DateTime<Self>>
fn timestamp_opt(&self, secs: i64, nsecs: u32) -> LocalResult<DateTime<Self>>
Makes a new DateTime
from the number of non-leap seconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”)
and the number of nanoseconds since the last whole non-leap second.
The nanosecond part can exceed 1,000,000,000 in order to represent a
leap second, but only when secs % 60 == 59
.
(The true “UNIX timestamp” cannot represent a leap second unambiguously.)
§Errors
Returns LocalResult::None
on out-of-range number of seconds and/or
invalid nanosecond, otherwise always returns LocalResult::Single
.
§Example
use chrono::{Utc, TimeZone};
assert_eq!(Utc.timestamp_opt(1431648000, 0).unwrap().to_string(), "2015-05-15 00:00:00 UTC");
Sourcefn timestamp_millis(&self, millis: i64) -> DateTime<Self>
👎Deprecated since 0.4.23: use timestamp_millis_opt()
instead
fn timestamp_millis(&self, millis: i64) -> DateTime<Self>
timestamp_millis_opt()
insteadMakes a new DateTime
from the number of non-leap milliseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”).
Panics on out-of-range number of milliseconds for a non-panicking
version see timestamp_millis_opt
.
Sourcefn timestamp_millis_opt(&self, millis: i64) -> LocalResult<DateTime<Self>>
fn timestamp_millis_opt(&self, millis: i64) -> LocalResult<DateTime<Self>>
Makes a new DateTime
from the number of non-leap milliseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”).
Returns LocalResult::None
on out-of-range number of milliseconds
and/or invalid nanosecond, otherwise always returns
LocalResult::Single
.
§Example
use chrono::{Utc, TimeZone, LocalResult};
match Utc.timestamp_millis_opt(1431648000) {
LocalResult::Single(dt) => assert_eq!(dt.timestamp(), 1431648),
_ => panic!("Incorrect timestamp_millis"),
};
Sourcefn timestamp_nanos(&self, nanos: i64) -> DateTime<Self>
fn timestamp_nanos(&self, nanos: i64) -> DateTime<Self>
Makes a new DateTime
from the number of non-leap nanoseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”).
Unlike timestamp_millis_opt
, this never fails.
§Example
use chrono::{Utc, TimeZone};
assert_eq!(Utc.timestamp_nanos(1431648000000000).timestamp(), 1431648);
Sourcefn timestamp_micros(&self, micros: i64) -> LocalResult<DateTime<Self>>
fn timestamp_micros(&self, micros: i64) -> LocalResult<DateTime<Self>>
Makes a new DateTime
from the number of non-leap microseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”).
§Example
use chrono::{Utc, TimeZone};
assert_eq!(Utc.timestamp_micros(1431648000000).unwrap().timestamp(), 1431648);
Sourcefn datetime_from_str(&self, s: &str, fmt: &str) -> ParseResult<DateTime<Self>>
👎Deprecated since 0.4.29: use DateTime::parse_from_str
or NaiveDateTime::parse_from_str
with and_utc()
or and_local_timezone()
instead
fn datetime_from_str(&self, s: &str, fmt: &str) -> ParseResult<DateTime<Self>>
DateTime::parse_from_str
or NaiveDateTime::parse_from_str
with and_utc()
or and_local_timezone()
insteadParses a string with the specified format string and returns a
DateTime
with the current offset.
See the crate::format::strftime
module on the
supported escape sequences.
If the to-be-parsed string includes an offset, it must match the offset of the TimeZone, otherwise an error will be returned.
See also DateTime::parse_from_str
which gives a DateTime
with
parsed FixedOffset
.
See also NaiveDateTime::parse_from_str
which gives a NaiveDateTime
without
an offset, but can be converted to a DateTime
with NaiveDateTime::and_utc
or
NaiveDateTime::and_local_timezone
.
Sourcefn from_local_date(&self, local: &NaiveDate) -> LocalResult<Date<Self>>
👎Deprecated since 0.4.23: use from_local_datetime()
instead
fn from_local_date(&self, local: &NaiveDate) -> LocalResult<Date<Self>>
from_local_datetime()
insteadConverts the local NaiveDate
to the timezone-aware Date
if possible.
Sourcefn from_local_datetime(
&self,
local: &NaiveDateTime,
) -> LocalResult<DateTime<Self>>
fn from_local_datetime( &self, local: &NaiveDateTime, ) -> LocalResult<DateTime<Self>>
Converts the local NaiveDateTime
to the timezone-aware DateTime
if possible.
Sourcefn from_utc_date(&self, utc: &NaiveDate) -> Date<Self>
👎Deprecated since 0.4.23: use from_utc_datetime()
instead
fn from_utc_date(&self, utc: &NaiveDate) -> Date<Self>
from_utc_datetime()
insteadConverts the UTC NaiveDate
to the local time.
The UTC is continuous and thus this cannot fail (but can give the duplicate local time).
Sourcefn from_utc_datetime(&self, utc: &NaiveDateTime) -> DateTime<Self>
fn from_utc_datetime(&self, utc: &NaiveDateTime) -> DateTime<Self>
Converts the UTC NaiveDateTime
to the local time.
The UTC is continuous and thus this cannot fail (but can give the duplicate local time).
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.