[][src]Struct hourglass::Timezone

pub struct Timezone { /* fields omitted */ }

A timezone.

There are several ways to create a new Timezone. It can be loaded from the IANA Time Zone Database, following the Area/Location pattern (e.g. Europe/Paris) with Timezone::new. A Timezone can be created as a fixed offset from UTC with Timezone::fixed or UTC itself with Timezone::utc. Finally, the Timezone can match the system local timezone with Timezone::local.


let utc = hourglass::Timezone::utc();
let now = utc.now();

for tzname in &["Europe/Paris", "America/New_York", "Asia/Seoul"] {
    let tz = hourglass::Timezone::new(tzname).unwrap();
    let now = now.project(&tz);
    println!("it is now {:?} in {}", now, tzname);


impl Timezone[src]

pub fn new(timezone: &str) -> Result<Self, TzError>[src]

Try to load a new Timezone. It assumes that the zoneinfo data are located under /usr/share/zoneinfo.

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

Load the local Timezone set by the system, disregarding the TZ environment variable.

pub fn utc() -> Self[src]

Returns the UTC timezone.

pub fn fixed(sec: i32) -> Self[src]

Returns a fixed offset to UTC timezone. The provided offset is in seconds.

pub fn posix(posix: &str) -> Result<Self, TzError>[src]

Create a Timezone from a POSIX TZ definition. See man 3 tzset for a description of the format.

pub fn now(&self) -> Datetime[src]

Return the Datetime representing now, relative to this Timezone.

pub fn parse(&self, s: &str, fmt: &str) -> Result<Datetime, InputError>[src]

Parse a Datetime relative to this Timezone according to the given format. Timezone-related field are ignored. An InputError is returned if the string does not match the format.

pub fn unix(&self, stamp: i64, nano: i32) -> Result<Datetime, InputError>[src]

Create a new Datetime from a Unix timestamp. The provided timestamp represents Unix seconds from the Epoch, discarding any leap seconds that may have happened in between. A Unix timestamp is ambiguous on leap second insertion (e.g. 1435708800 is equal to both 2015-06-30T23:59:60Z and 2015-07-01T00:00:00Z) however, unix will always choose the non-leap second. Return an InputError if nano ∉ [0, 999999999].

pub fn datetime(
    year: i32,
    month: i32,
    day: i32,
    hour: i32,
    minute: i32,
    second: i32,
    nano: i32
) -> Result<Datetime, InputError>

Create a new Datetime relative to this Timezone. An InputError is returned if the following constraints do not hold:

  • month ∊ [1, 12]
  • day ∊ [1, 31] and is valid within the month
  • hour ∊ [0, 23]
  • minute ∊ [0, 59]
  • second ∊ [0, 60]
  • nano ∊ [0, 999999999]

Auto Trait Implementations

impl Send for Timezone

impl Sync for Timezone

Blanket Implementations

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

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.

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

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

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