#时区 #日期时间 #时间 #日历 #日期 #时区 #Unix时间戳

无需std tz-rs

A pure Rust reimplementation of libc functions localtime, gmtime and mktime

28个版本 (5 breaking)

0.6.14 2022年8月13日
0.6.12 2022年7月26日
0.6.7 2022年3月23日

#18 in 日期和时间

Download history 31663/week @ 2024-04-20 30778/week @ 2024-04-27 28411/week @ 2024-05-04 26207/week @ 2024-05-11 31576/week @ 2024-05-18 27964/week @ 2024-05-25 27752/week @ 2024-06-01 25058/week @ 2024-06-08 27769/week @ 2024-06-15 26101/week @ 2024-06-22 26347/week @ 2024-06-29 25970/week @ 2024-07-06 25950/week @ 2024-07-13 28088/week @ 2024-07-20 34058/week @ 2024-07-27 32674/week @ 2024-08-03

125,121 monthly downloads
用于 83 个crates (20 directly)

MIT/Apache

230KB
4K SLoC

tz-rs

version Minimum supported Rust version Documentation

A pure Rust reimplementation of libc functions localtime, gmtime and mktime.

This crate allows to convert between a Unix timestamp and a calendar time exprimed in the proleptic gregorian calendar with a provided time zone.

Time zones are provided to the library with a POSIX TZ string which can be read from the environment.

Two formats are currently accepted for the TZ string

  • std offset[dst[offset][,start[/time],end[/time]]] providing a time zone description,
  • file or :file providing the path to a TZif file, which is absolute or relative to the system timezone directory.

See also the Linux manual page of tzset(3) and the glibc documentation of the TZ environment variable.

上下文

Calls to libc localtime_r and other related functions from Rust are not safe in a multithreaded application, because they may internally set the TZ environment variable with the setenv function, which is not thread-safe.

请参阅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.45+,否则需要rustc 1.55+

许可证

此项目可以在以下任一许可证下使用

任选其一。

除非您明确说明,否则,根据Apache-2.0许可证定义,您有意提交的任何贡献,都应如上所述双重许可,无需任何额外的条款或条件。

依赖关系