Web Analytics

tz-rs

⭐ 171 stars Simplified Chinese by x-hgg-x

tz-rs

version Minimum supported Rust version Documentation

一个纯 Rust 重新实现的 libc 函数 localtimegmtimemktime

该 crate 允许在 Unix 时间戳 与带有指定时区的 历法时间(使用儒略历) 之间进行转换。

时区通过 POSIX TZ 字符串 提供给库,该字符串可以从环境变量中读取。

目前 TZ 字符串接受两种格式:

另请参阅 Linux tzset(3) 手册页glibc 中 TZ 环境变量的文档

背景

从 Rust 调用 libc 的 localtime_r 及其他相关函数在多线程应用中不安全,因为它们可能会内部使用 setenv 函数设置 TZ 环境变量,而该函数不是线程安全的。

更多信息请参见 RUSTSEC-2020-0071RUSTSEC-2020-0159

文档

文档托管在 docs.rs

平台支持

该 crate 主要面向 UNIX 平台。

由于时区数据库文件未包含在该 crate 中,非 UNIX 用户可以从 IANA 网站 下载数据库副本,并将时区数据库文件编译到本地目录。

然后可以通过在 TZ 字符串中指定绝对路径来读取数据库文件:

TimeZone::from_posix_tz(format!("{local_database_dir}/usr/share/zoneinfo/Pacific/Auckland"))?;
请注意,此 crate 在非 UNIX 平台上不支持本地时区的确定。

或者,可以使用像 tzdb 这样的 crate,它为此 crate 静态提供现有的时区定义,并支持在所有 Tier 1 平台上查找本地时区。

日期时间格式化(等同于 libc 的 strftime 函数)

此 crate 不提供自定义日期时间格式化支持,但可以使用 custom-format crate 为标准库格式化宏提供自定义格式说明符。

编译器支持

需要 rustc 1.85+

许可证

本项目授权许可为以下任一:

由您选择。

除非您明确说明,否则您有意提交以包含在本项目中的任何贡献,按照 Apache-2.0 许可证定义,将按上述双重许可授权,不附加任何额外条款或条件。

--- Tranlated By Open Ai Tx | Last indexed: 2026-07-26 ---