#timezone #iana #dst #json #tzfiles

tzparse

This high-level library reads IANA system timezone information files and returns timechanges (ie. daylight saving time) and human readable data about a timezone.

16 releases (6 stable)

✓ Uses Rust 2018 edition

new 1.1.1 Jul 3, 2020
1.1.0 Jun 26, 2020
1.0.3 Jan 25, 2020
0.5.2 Jan 4, 2020
0.3.0 Nov 20, 2019

#28 in Date and time

Download history 14/week @ 2020-03-11 70/week @ 2020-03-18 28/week @ 2020-03-25 14/week @ 2020-04-01 61/week @ 2020-04-08 59/week @ 2020-04-15 15/week @ 2020-04-22 5/week @ 2020-04-29 44/week @ 2020-05-13 16/week @ 2020-05-20 20/week @ 2020-05-27 43/week @ 2020-06-03 3/week @ 2020-06-10 2/week @ 2020-06-17 20/week @ 2020-06-24

96 downloads per month
Used in zdump

GPL-3.0 license

17KB
218 lines

tzparse

Current Crates.io Version Downloads badge

This library's functions are used to retrieve time changes and date/time characteristics for a given TZ. Based on IANA database, system timezone files and low-level parsing library.

There are two functions:

get_zoneinfo parses the tzfile and returns a Tzinfo struct which provides useful and human-readable data about the timezone and can be converted to a json string with an optional feature.

get_timechanges obtains time changes for specified year, or all time changes recorded in the TZfile if no year is specified.

Example with get_zoneinfo:

[dependencies]
tzparse = { version = "1.1", features=["json"] }

fn main() {
    println!("{}", tzparse::get_zoneinfo("/usr/share/zoneinfo/Europe/Paris").unwrap().to_json().unwrap());
}

Outputs:

{"timezone":"Europe/Paris","utc_datetime":"2020-01-22T14:12:36.792898Z","datetime":"2020-01-22T15:12:36.792898+01:00",
"dst_from":"2020-03-29T01:00:00Z","dst_until":"2020-10-25T01:00:00Z","dst_period":false,"raw_offset":3600,
"dst_offset":7200,"utc_offset":"+01:00","abbreviation":"CET","week_number":4}

The get_timechanges function for Europe/Paris in 2019 returns:

[Timechange { time: 2019-03-31T01:00:00Z, gmtoff: 7200, isdst: true, abbreviation: "CEST" },
Timechange { time: 2019-10-27T01:00:00Z, gmtoff: 3600, isdst: false, abbreviation: "CET" }]

License: GPL-3.0

Dependencies

~0.7–1.2MB
~20K SLoC