4 个版本
0.1.3 | 2023年11月30日 |
---|---|
0.1.2 | 2023年11月30日 |
0.1.1 | 2023年9月10日 |
0.1.0 | 2023年5月1日 |
#133 in 日期和时间
28KB
620 代码行
日期差异计算器
计算两个 DateTime
实例之间的时间间隔,并以年、月、日、小时、分钟、秒以及纳秒(而不是以不同单位表示相同的持续时间)的形式输出结果。此库适用于寿命检查和年龄计算。
用法
use chrono::prelude::*;
use date_differencer::{date_diff, date_time_diff, add_date_time_diff};
let a = Local.with_ymd_and_hms(2022, 4, 6, 0, 0, 0).unwrap();
let b = Local.with_ymd_and_hms(2023, 6, 9, 1, 0, 0).unwrap();
println!("{:?}", date_diff(a, b));
/*
{
"years": 1,
"months": 2,
"days": 3
}
*/
println!("{:?}", date_time_diff(a, b));
/*
{
"years": 1,
"months": 2,
"days": 3,
"hours": 1,
"minutes": 0,
"seconds": 0,
"nanoseconds": 0
}
*/
println!("{}", add_date_time_diff(a, &date_time_diff(a, b)).unwrap()); // the same as b
此库可以正确处理闰年和月份中奇数/偶数天数。以下代码的结果可能有点令人困惑,但却是合理的。
use chrono::prelude::*;
use date_differencer::date_diff;
let a = Local.with_ymd_and_hms(2020, 2, 27, 0, 0, 0).unwrap();
let b = Local.with_ymd_and_hms(2021, 3, 1, 0, 0, 0).unwrap();
println!("{:?}", date_diff(a, b));
/*
{
"years": 1,
"months": 0,
"days": 2
}
Explanation:
1. 2020-02-27 + 1 year -> 2021-02-27
2. 2021-02-27 + 2 days -> 2021-03-01 (2021-02 has 28 days)
*/
println!("{:?}", date_diff(b, a));
/*
{
"years": -1,
"months": 0,
"days": -3
}
Explanation:
1. 2021-03-01 - 1 year -> 2020-03-01
2. 2020-03-01 - 3 days -> 2020-02-27 (2020-02 has 29 days)
*/
Crates.io
https://crates.io/crates/date-differencer
文档
https://docs.rs/date-differencer
许可证
依赖项
~1MB
~18K SLoC