Struct hourglass::Timezone
[−]
[src]
pub struct Timezone { // some 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
.
Example
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); }
Methods
impl Timezone
[src]
fn new(timezone: &str) -> Result<Self>
Try to load a new Timezone
.
It assumes that the zoneinfo data are located
under /usr/share/zoneinfo
.
fn local() -> Result<Self>
Load the local Timezone
set by the system,
disregarding the TZ
environment variable.
fn utc() -> Self
Returns the UTC
timezone.
fn fixed(sec: i32) -> Self
Returns a fixed offset to UTC
timezone.
The provided offset is in seconds.
fn now(&self) -> Datetime
Return the Datetime
representing now, relative to this Timezone
.
fn parse(&self, s: &str, fmt: &str) -> Result<Datetime, InputError>
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.
fn unix(&self, stamp: i64, nano: i32) -> Result<Datetime, InputError>
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].
fn datetime(&self, 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 monthhour
∊ [0, 23]minute
∊ [0, 59]second
∊ [0, 60]nano
∊ [0, 999999999]