pub struct Tz { /* private fields */ }Expand description
Time zone parsed from a tz database file.
When a time zone has complex transition rules, a Tz object can be very
large and expensive to clone. As every DateTime
instant would store a copy of the time zone object, it would be very slow to
support DateTime<Tz> directly. Therefore, Tz itself does not implement
TimeZone. Rather, you may use one of the following instead:
&'a Tz— zero cost to clone, but only valid within the lifetime'a.RcTz— uses reference counting (Rc) to support shallow cloning, but is not thread-safe.ArcTz— uses atomic reference counting (Arc) to support shallow cloning, slightly more expensive thanRcTzbut is thread-safe.
§Examples
Read the time zone information from the system, and use &Tz as TimeZone.
use chrono::{Utc, TimeZone};
use tzfile::Tz;
let tz = Tz::named("America/New_York")?;
let dt1 = Utc.ymd(2019, 3, 10).and_hms(6, 45, 0);
assert_eq!(dt1.with_timezone(&&tz).to_string(), "2019-03-10 01:45:00 EST");
let dt2 = Utc.ymd(2019, 3, 10).and_hms(7, 15, 0);
assert_eq!(dt2.with_timezone(&&tz).to_string(), "2019-03-10 03:15:00 EDT");
Implementations§
Source§impl Tz
impl Tz
Sourcepub fn parse(_name: &str, source: &[u8]) -> Result<Self, Error>
pub fn parse(_name: &str, source: &[u8]) -> Result<Self, Error>
Parses the content of the tz database file.
This crate can only recognize version 2 and 3 of the tz database. Like
chrono, leap second information is ignored. The embedded POSIX TZ
string, which describes non-hard-coded transition rules in the far
future, is also not handled.
§Examples
Read a file into bytes and then parse it.
use tzfile::Tz;
let content = std::fs::read("/usr/share/zoneinfo/Etc/UTC")?;
let tz = Tz::parse("Etc/UTC", &content)?;
Trait Implementations§
Source§impl From<FixedOffset> for Tz
impl From<FixedOffset> for Tz
Source§fn from(offset: FixedOffset) -> Self
fn from(offset: FixedOffset) -> Self
Source§impl<'a> TimeZone for &'a Tz
impl<'a> TimeZone for &'a Tz
Source§type Offset = Offset<&'a Tz>
type Offset = Offset<&'a Tz>
TimeZone value can be recovered via TimeZone::from_offset.Source§fn from_offset(offset: &Self::Offset) -> Self
fn from_offset(offset: &Self::Offset) -> Self
Source§fn offset_from_utc_datetime(&self, utc: &NaiveDateTime) -> Self::Offset
fn offset_from_utc_datetime(&self, utc: &NaiveDateTime) -> Self::Offset
NaiveDateTime. This cannot fail.Source§fn offset_from_utc_date(&self, utc: &NaiveDate) -> Self::Offset
fn offset_from_utc_date(&self, utc: &NaiveDate) -> Self::Offset
NaiveDate. This cannot fail.Source§fn offset_from_local_date(&self, local: &NaiveDate) -> LocalResult<Self::Offset>
fn offset_from_local_date(&self, local: &NaiveDate) -> LocalResult<Self::Offset>
NaiveDate if possible.Source§fn offset_from_local_datetime(
&self,
local: &NaiveDateTime,
) -> LocalResult<Self::Offset>
fn offset_from_local_datetime( &self, local: &NaiveDateTime, ) -> LocalResult<Self::Offset>
NaiveDateTime if possible.Source§fn 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>>
DateTime from year, month, day, time components and current time zone. Read moreSource§fn ymd(&self, year: i32, month: u32, day: u32) -> Date<Self>
fn ymd(&self, year: i32, month: u32, day: u32) -> Date<Self>
with_ymd_and_hms() insteadDate from year, month, day and the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE. Read moreSource§fn ymd_opt(&self, year: i32, month: u32, day: u32) -> LocalResult<Date<Self>>
fn ymd_opt(&self, year: i32, month: u32, day: u32) -> LocalResult<Date<Self>>
with_ymd_and_hms() insteadDate from year, month, day and the current time zone.
This assumes the proleptic Gregorian calendar, with the year 0 being 1 BCE. Read moreSource§fn yo(&self, year: i32, ordinal: u32) -> Date<Self>
fn yo(&self, year: i32, ordinal: u32) -> Date<Self>
from_local_datetime() with a NaiveDateTime insteadDate 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. Read moreSource§fn yo_opt(&self, year: i32, ordinal: u32) -> LocalResult<Date<Self>>
fn yo_opt(&self, year: i32, ordinal: u32) -> LocalResult<Date<Self>>
from_local_datetime() with a NaiveDateTime insteadDate 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. Read moreSource§fn isoywd(&self, year: i32, week: u32, weekday: Weekday) -> Date<Self>
fn isoywd(&self, year: i32, week: u32, weekday: Weekday) -> Date<Self>
from_local_datetime() with a NaiveDateTime insteadDate 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. Read moreSource§fn isoywd_opt(
&self,
year: i32,
week: u32,
weekday: Weekday,
) -> LocalResult<Date<Self>>
fn isoywd_opt( &self, year: i32, week: u32, weekday: Weekday, ) -> LocalResult<Date<Self>>
from_local_datetime() with a NaiveDateTime insteadDate 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. Read moreSource§fn timestamp(&self, secs: i64, nsecs: u32) -> DateTime<Self>
fn timestamp(&self, secs: i64, nsecs: u32) -> DateTime<Self>
timestamp_opt() insteadDateTime 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. Read moreSource§fn timestamp_opt(&self, secs: i64, nsecs: u32) -> LocalResult<DateTime<Self>>
fn timestamp_opt(&self, secs: i64, nsecs: u32) -> LocalResult<DateTime<Self>>
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. Read moreSource§fn timestamp_millis(&self, millis: i64) -> DateTime<Self>
fn timestamp_millis(&self, millis: i64) -> DateTime<Self>
timestamp_millis_opt() insteadDateTime from the number of non-leap milliseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”). Read moreSource§fn timestamp_millis_opt(&self, millis: i64) -> LocalResult<DateTime<Self>>
fn timestamp_millis_opt(&self, millis: i64) -> LocalResult<DateTime<Self>>
DateTime from the number of non-leap milliseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”). Read moreSource§fn timestamp_nanos(&self, nanos: i64) -> DateTime<Self>
fn timestamp_nanos(&self, nanos: i64) -> DateTime<Self>
DateTime from the number of non-leap nanoseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”). Read moreSource§fn timestamp_micros(&self, micros: i64) -> LocalResult<DateTime<Self>>
fn timestamp_micros(&self, micros: i64) -> LocalResult<DateTime<Self>>
DateTime from the number of non-leap microseconds
since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”). Read moreSource§fn datetime_from_str(
&self,
s: &str,
fmt: &str,
) -> Result<DateTime<Self>, ParseError>
fn datetime_from_str( &self, s: &str, fmt: &str, ) -> Result<DateTime<Self>, ParseError>
DateTime::parse_from_str or NaiveDateTime::parse_from_str with and_utc() or and_local_timezone() insteadDateTime with the current offset. Read moreSource§fn from_local_date(&self, local: &NaiveDate) -> LocalResult<Date<Self>>
fn from_local_date(&self, local: &NaiveDate) -> LocalResult<Date<Self>>
from_local_datetime() insteadNaiveDate to the timezone-aware Date if possible.Source§fn from_local_datetime(
&self,
local: &NaiveDateTime,
) -> LocalResult<DateTime<Self>>
fn from_local_datetime( &self, local: &NaiveDateTime, ) -> LocalResult<DateTime<Self>>
NaiveDateTime to the timezone-aware DateTime if possible.Source§fn from_utc_date(&self, utc: &NaiveDate) -> Date<Self>
fn from_utc_date(&self, utc: &NaiveDate) -> Date<Self>
from_utc_datetime() insteadNaiveDate to the local time.
The UTC is continuous and thus this cannot fail (but can give the duplicate local time).Source§fn from_utc_datetime(&self, utc: &NaiveDateTime) -> DateTime<Self>
fn from_utc_datetime(&self, utc: &NaiveDateTime) -> DateTime<Self>
NaiveDateTime to the local time.
The UTC is continuous and thus this cannot fail (but can give the duplicate local time).