Struct tzfile::Tz[][src]

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");

Implementations

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("Etc/UTC", &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 Clone for Tz[src]

impl Debug for Tz[src]

impl Eq for Tz[src]

impl From<FixedOffset> for Tz[src]

impl From<Tz> for RcTz[src]

impl From<Tz> for ArcTz[src]

impl From<Utc> for Tz[src]

impl Hash for Tz[src]

impl PartialEq<Tz> for Tz[src]

impl StructuralEq for Tz[src]

impl StructuralPartialEq for Tz[src]

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

Auto Trait Implementations

impl RefUnwindSafe for Tz

impl Send for Tz

impl Sync for Tz

impl Unpin for Tz

impl UnwindSafe for Tz

Blanket Implementations

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

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

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

impl<T> From<T> for T[src]

impl<T, U> Into<U> 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, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.