#时区 #日期时间 #时间 #tz #iana #name #chrono

time-tz

为 time-rs Rustcrate 实现tz数据库(IANA)

17个版本 (5个稳定版)

3.0.0-rc.5.0.02024年3月2日
2.0.0 2023年7月22日
1.0.3 2023年6月10日
1.0.2 2022年5月22日
0.5.2 2022年3月11日

日期和时间 类别中排名 24

Download history 8588/week @ 2024-04-12 6671/week @ 2024-04-19 6743/week @ 2024-04-26 4922/week @ 2024-05-03 5892/week @ 2024-05-10 7822/week @ 2024-05-17 6859/week @ 2024-05-24 6067/week @ 2024-05-31 6411/week @ 2024-06-07 5234/week @ 2024-06-14 5448/week @ 2024-06-21 4146/week @ 2024-06-28 5901/week @ 2024-07-05 6744/week @ 2024-07-12 5948/week @ 2024-07-19 4568/week @ 2024-07-26

每月下载量 23,817
22 个crate(16个直接使用)使用

BSD-3-Clause

635KB
10K SLoC

C 7K SLoC // 0.2% comments Rust 1.5K SLoC // 0.2% comments AWK 1K SLoC // 0.2% comments Korn shell 690 SLoC // 0.1% comments Shell 36 SLoC // 0.1% comments

time-tz

time-rs Rustcrate的tz数据库实现。

chat

此实现基于chrono-tz (https://github.com/chronotope/chrono-tz),但使用time-rs而不是chrono。这是为了替换受CVE-2020-26235(localtime_r线程安全性问题与std::env::set_var相关)影响的chrono依赖项。

特性

  • 为任何 PrimitiveDateTime 注入 assume_timezone 成员函数。
  • 为任何 OffsetDateTime 注入 to_timezone 成员函数。
  • 提供 timezones::get_by_name 函数,通过名称获取时区。
  • 支持从Windows时区名称中查找最接近的IANA匹配。
  • 支持获取系统的当前时区(通过 system 功能)。

用法

use time::macros::datetime;
use time_tz::{PrimitiveDateTimeExt, OffsetDateTimeExt, timezones};

fn main()
{
    // ===========================================
    //  Create a new datetime in a given timezone
    // ===========================================
    
    // First we have to get the source timezone:
    let london = timezones::db::europe::LONDON;

    // Now we can create a primitive date time and call the extension function:
    let dt = datetime!(2016-10-8 17:0:0).assume_timezone_utc(london);


    // ===========================
    //  Convert to a new timezone
    // ===========================

    // First we get the target timezone:
    let berlin = timezones::db::europe::BERLIN;

    // Now we can convert (again by calling an extension function):
    let converted = dt.to_timezone(berlin);

    // ... do something with converted
}

依赖项

~1–13MB
~124K SLoC