#timezone #iana #dst #json #tzfiles

tzparse

此高级库读取 IANA 系统时区信息文件,并返回时区过渡时间(即夏令时)以及关于时区的人类可读数据。

18 个版本 (8 个稳定版本)

1.1.3 2020 年 11 月 27 日
1.1.1 2020 年 7 月 3 日
1.0.3 2020 年 1 月 25 日
0.5.2 2020 年 1 月 4 日
0.3.0 2019 年 11 月 20 日

#20#dst

GPL-3.0 许可证

18KB
260

tzparse

Current Crates.io Version Downloads badge

请注意 此库不再维护,并已与 libtzfile 库 合并。

此库的函数用于获取给定 TZ 的过渡时间和日期/时间特征。基于 IANA 数据库、系统时区文件和您应使用的 libtzfile 库

有两个函数

get_zoneinfo 解析 tzfile 并返回一个 Tzinfo 结构体,它提供了关于时区的有用且易于理解的数据,并且可以通过可选功能转换为 json 字符串。

get_timechanges 获取指定年份的时间变化,如果没有指定年份,则获取 TZfile 中记录的所有时间变化。

使用 get_zoneinfo 的示例

[dependencies]
tzparse = { version = "1.1", features=["json"] }
fn main() {
    println!("{}", tzparse::get_zoneinfo("/usr/share/zoneinfo/Europe/Paris").unwrap().to_json().unwrap());
}

输出

{"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}

get_timechanges 函数针对 2019 年的欧洲/巴黎返回

[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" }]

许可证:GPL-3.0

依赖关系

~1–1.6MB
~27K SLoC