[][src]Struct tzfile::Tz

pub struct Tz { /* fields omitted */ }

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 than RcTz but 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");

Methods

impl Tz[src]

pub fn parse(_name: &str, source: &[u8]) -> Result<Self, Error>[src]

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(&content)?;

pub fn named(name: &str) -> Result<Self>[src]

Reads and parses a system time zone.

This function is equivalent to reading /usr/share/zoneinfo/{name} and the constructs a time zone via parse().

This function is currently only supported on Unix.

pub fn local() -> Result<Self>[src]

Reads the parses the current local time zone.

This function calls Tz::named($TZ) if the environment variable $TZ is set, otherwise reads and parses /etc/localtime.

This function is currently only supported on Unix.

Trait Implementations

impl Eq for Tz[src]

impl PartialEq<Tz> for Tz[src]

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests for !=.

impl From<Utc> for Tz[src]

impl From<FixedOffset> for Tz[src]

impl Clone for Tz[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl Debug for Tz[src]

impl Hash for Tz[src]

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0
[src]

Feeds a slice of this type into the given [Hasher]. Read more

impl<'a> TimeZone for &'a Tz[src]

type Offset = Offset<Self>

An associated offset type. This type is used to store the actual offset in date and time types. The original TimeZone value can be recovered via TimeZone::from_offset. Read more

fn ymd(&self, year: i32, month: u32, day: u32) -> Date<Self>[src]

Makes 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. Read more

fn ymd_opt(&self, year: i32, month: u32, day: u32) -> LocalResult<Date<Self>>[src]

Makes 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. Read more

fn yo(&self, year: i32, ordinal: u32) -> Date<Self>[src]

Makes 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. Read more

fn yo_opt(&self, year: i32, ordinal: u32) -> LocalResult<Date<Self>>[src]

Makes 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. Read more

fn isoywd(&self, year: i32, week: u32, weekday: Weekday) -> Date<Self>[src]

Makes 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. Read more

fn isoywd_opt(
    &self,
    year: i32,
    week: u32,
    weekday: Weekday
) -> LocalResult<Date<Self>>
[src]

Makes 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. Read more

fn timestamp(&self, secs: i64, nsecs: u32) -> DateTime<Self>[src]

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. Read more

fn timestamp_opt(&self, secs: i64, nsecs: u32) -> LocalResult<DateTime<Self>>[src]

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. Read more

fn timestamp_millis(&self, millis: i64) -> DateTime<Self>[src]

Makes a new DateTime from the number of non-leap milliseconds since January 1, 1970 0:00:00 UTC (aka "UNIX timestamp"). Read more

fn timestamp_millis_opt(&self, millis: i64) -> LocalResult<DateTime<Self>>[src]

Makes a new DateTime from the number of non-leap milliseconds since January 1, 1970 0:00:00 UTC (aka "UNIX timestamp"). Read more

fn datetime_from_str(
    &self,
    s: &str,
    fmt: &str
) -> Result<DateTime<Self>, ParseError>
[src]

Parses a string with the specified format string and returns a DateTime with the current offset. See the format::strftime module on the supported escape sequences. Read more

fn from_local_date(&self, local: &NaiveDate) -> LocalResult<Date<Self>>[src]

Converts the local NaiveDate to the timezone-aware Date if possible.

fn from_local_datetime(
    &self,
    local: &NaiveDateTime
) -> LocalResult<DateTime<Self>>
[src]

Converts the local NaiveDateTime to the timezone-aware DateTime if possible.

fn from_utc_date(&self, utc: &NaiveDate) -> Date<Self>[src]

Converts the UTC NaiveDate to the local time. The UTC is continuous and thus this cannot fail (but can give the duplicate local time). Read more

fn from_utc_datetime(&self, utc: &NaiveDateTime) -> DateTime<Self>[src]

Converts the UTC NaiveDateTime to the local time. The UTC is continuous and thus this cannot fail (but can give the duplicate local time). Read more

Auto Trait Implementations

impl Send for Tz

impl Sync for Tz

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.