[go: up one dir, main page]

Tz

Struct Tz 

Source
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 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§

Source§

impl Tz

Source

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)?;
Source

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

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.

Source

pub fn local() -> Result<Self>

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§

Source§

impl Clone for Tz

Source§

fn clone(&self) -> Tz

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Tz

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<FixedOffset> for Tz

Source§

fn from(offset: FixedOffset) -> Self

Converts to this type from the input type.
Source§

impl From<Tz> for ArcTz

Source§

fn from(tz: Tz) -> Self

Converts to this type from the input type.
Source§

impl From<Tz> for RcTz

Source§

fn from(tz: Tz) -> Self

Converts to this type from the input type.
Source§

impl From<Utc> for Tz

Source§

fn from(_: Utc) -> Self

Converts to this type from the input type.
Source§

impl Hash for Tz

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

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

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Tz

Source§

fn eq(&self, other: &Tz) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'a> TimeZone for &'a Tz

Source§

type Offset = Offset<&'a Tz>

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.
Source§

fn from_offset(offset: &Self::Offset) -> Self

Reconstructs the time zone from the offset.
Source§

fn offset_from_utc_datetime(&self, utc: &NaiveDateTime) -> Self::Offset

Creates the offset for given UTC NaiveDateTime. This cannot fail.
Source§

fn offset_from_utc_date(&self, utc: &NaiveDate) -> Self::Offset

Creates the offset for given UTC NaiveDate. This cannot fail.
Source§

fn offset_from_local_date(&self, local: &NaiveDate) -> LocalResult<Self::Offset>

Creates the offset(s) for given local NaiveDate if possible.
Source§

fn offset_from_local_datetime( &self, local: &NaiveDateTime, ) -> LocalResult<Self::Offset>

Creates the offset(s) for given local 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>>

Make a new DateTime from year, month, day, time components and current time zone. Read more
Source§

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

👎Deprecated since 0.4.23: use with_ymd_and_hms() instead
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
Source§

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

👎Deprecated since 0.4.23: use with_ymd_and_hms() instead
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
Source§

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

👎Deprecated since 0.4.23: use from_local_datetime() with a NaiveDateTime instead
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
Source§

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

👎Deprecated since 0.4.23: use from_local_datetime() with a NaiveDateTime instead
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
Source§

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

👎Deprecated since 0.4.23: use from_local_datetime() with a NaiveDateTime instead
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
Source§

fn 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
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
Source§

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

👎Deprecated since 0.4.23: use timestamp_opt() instead
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
Source§

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

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

👎Deprecated since 0.4.23: use timestamp_millis_opt() instead
Makes a new DateTime from the number of non-leap milliseconds since January 1, 1970 0:00:00 UTC (aka “UNIX timestamp”). Read more
Source§

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”). Read more
Source§

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”). Read more
Source§

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”). Read more
Source§

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

👎Deprecated since 0.4.29: use DateTime::parse_from_str or NaiveDateTime::parse_from_str with and_utc() or and_local_timezone() instead
Parses a string with the specified format string and returns a DateTime with the current offset. Read more
Source§

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

👎Deprecated since 0.4.23: use from_local_datetime() instead
Converts the local NaiveDate to the timezone-aware Date if possible.
Source§

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

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

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

👎Deprecated since 0.4.23: use from_utc_datetime() instead
Converts the UTC NaiveDate 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>

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

impl Eq for Tz

Source§

impl StructuralPartialEq for Tz

Auto Trait Implementations§

§

impl Freeze for Tz

§

impl RefUnwindSafe for Tz

§

impl Send for Tz

§

impl Sync for Tz

§

impl Unpin for Tz

§

impl UnwindSafe for Tz

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.