17个版本 (5个稳定版)
3.0.0-rc.5.0.0 | 2024年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
每月下载量 23,817
被 22 个crate(16个直接使用)使用
635KB
10K SLoC
time-tz
time-rs Rustcrate的tz数据库实现。
此实现基于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