#时区 #区域 #时间

zone-detect

Rust 版本的 ZoneDetect C 库

4 个版本 (2 个稳定版)

1.0.1 2024 年 3 月 17 日
1.0.0 2021 年 9 月 6 日
0.2.0 2020 年 1 月 27 日
0.1.0 2020 年 1 月 25 日

#80日期和时间

BSD-3-Clause

3.5MB
946

zone-detect

crates.io Documentation

这是一个 ZoneDetect C 库的 Rust 版本。初始转换使用 c2rust 完成,然后手动清理(不再包含任何不安全代码)。

此 crate 可用于查找地球上任何位置的国家和时区。

运行示例

$ cargo run --example demo data/timezone21.bin 35.0715 -82.5216
zone 0: ZoneMatch {
    kind: InZone,
    zone: Zone {
        polygon_id: 1458,
        meta_id: 3199,
        fields: {
            "CountryAlpha2": "US",
            "CountryName": "United States",
            "TimezoneIdPrefix": "America/",
            "TimezoneId": "New_York",
        },
    },
}

数据源

包含位置和时区数据的数据库位于 data/timezone21.bin。它可以按以下方式更新

git clone https://github.com/BertoldVdb/ZoneDetect
cd ZoneDetect/database/builder
./makedb.sh
cp out_v1/timezone21.bin zone-detect-rs/data/timezone21.bin

测试

有一个慢速测试会生成随机值,并比较 ZoneDetect 和 zone-detect-rs 的输出。

# Make sure the demo is built first; just run `make` in the ZoneDetect repo.

ZONEDETECT_DEMO=../ZoneDetect/demo cargo test -- --ignored

依赖项