tz-rs
一个纯 Rust 重新实现的 libc 函数 localtime、gmtime 和 mktime。
该 crate 允许在 Unix 时间戳 与带有指定时区的 历法时间(使用儒略历) 之间进行转换。
时区通过 POSIX TZ 字符串 提供给库,该字符串可以从环境变量中读取。
目前 TZ 字符串接受两种格式:
std offset[dst[offset][,start[/time],end[/time]]]提供时区描述,file或:file提供一个 TZif 文件 的路径,该路径可以是绝对路径或相对于系统时区目录的相对路径。
TZ 环境变量的文档。背景
从 Rust 调用 libc 的 localtime_r 及其他相关函数在多线程应用中不安全,因为它们可能会内部使用 setenv 函数设置 TZ 环境变量,而该函数不是线程安全的。
更多信息请参见 RUSTSEC-2020-0071 和 RUSTSEC-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 ---