#时区 #chrono #时间 #zero #sized #typed #utc

no-std chrono-simpletz

为 chrono 提供简单、零大小、类型化的时区

5 个不稳定版本

0.3.0 2024年1月20日
0.2.0 2023年12月24日
0.1.3 2021年4月2日
0.1.1 2021年4月1日
0.1.0 2021年4月1日

#182日期和时间

Download history 49/week @ 2024-03-09 42/week @ 2024-03-16 107/week @ 2024-03-23 23/week @ 2024-03-30 17/week @ 2024-04-06 4/week @ 2024-04-13 35/week @ 2024-04-20 1/week @ 2024-04-27 3/week @ 2024-05-11 9/week @ 2024-05-18 6/week @ 2024-05-25 14/week @ 2024-06-01 20/week @ 2024-06-08 48/week @ 2024-06-15 11/week @ 2024-06-22

93 每月下载量

MIT 许可证

36KB
591

chrono-simpletz

Doc Crate

chrono 提供 Simple Zero Sized Typed Utc 时区。这需要 const generic(在 rust >= 1.51 的稳定版本中)。

use chrono::*;
use chrono_simpletz::TimeZoneZst;
use chrono_simpletz::known_timezones::*;
use std::mem::size_of_val;
//construct by new() or Default::default()
let p9 = UtcP9::new();
//size of UtcP9 is zero
assert_eq!(size_of_val(&p9), 0);
assert_eq!(&p9.to_string(), "+09:00");
assert_eq!(UtcP9::IS_IN_VALID_RANGE, true);
let time = p9.ymd(2000, 1, 1).and_hms(12, 00, 00);
let naive_time = NaiveDate::from_ymd_opt(2000, 1, 1).and_hms(3, 0, 0);
assert_eq!(time.naive_utc(), naive_time);
//same size as naive datetime
assert_eq!(size_of_val(&time),size_of_val(&naive_time));
let fixed = time.with_timezone(&p9.fix());
assert_eq!(time, fixed);
//same Display with FixedOffset
assert_eq!(time.to_string(), fixed.to_string());
// smaller size than fixed offset size
assert!(size_of_val(&time) < size_of_val(&fixed) )

功能

std (默认)

带有 std

clock (默认)

为 TimeZoneZst 添加了今天和 now 函数。

serde

serde_ts_(seconds|milliseconds|microseconds|nanoseconds)(|\_option)

添加了用于与 de/serialize_with 函数一起使用的 de/serialize 函数的模块。

serde_ts_rfc3339(|\_option)

添加了用于与 de/serialize_with 函数一起使用的 de/serialize 函数的模块。当您想像 DateTime<Utc> 一样进行 de/serialize 时需要此功能,因为 DateTime<UtcZtc<H,M>> 无法实现 De/Serialize。

依赖项

~1–6.5MB
~25K SLoC