#日期-时间 #日期 #时间

time_range

TimeRange 和 DateRange 类型用于 Chrono

1 个不稳定版本

0.0.3-alpha.02024年3月25日

#197日期和时间

MIT 许可证

145KB
2.5K SLoC

time_range

time_range 扩展 chrono 以提供两种范围类型:DateRange 和 TimeRange。它们用于表示日期或日期时间的范围,并封装相关功能,如迭代、交集、并集等。

使用方法

TimeRange


use time_range::{TimeRange, Utc, Datelike, Timelike};

// create from start and end bounds
let start_at = Utc.ymd(2024, 3, 1).and_hms(0, 0, 0)
let end_at = Utc.ymd(2024, 3, 13).and_hms(11, 59, 59);
let time_range = TimeRange::new(start_at, end_at);

println!("{:#?}", time_range); // TimeRange[2024-03-01T12:00:00+00:00 -> 2024-03-13T11:59:59+00:00]

// parse from a string
let time_range = TimeRange::parse("2024-03-24T12:00:00+00:00/2024-03-25T11:59:59+00:00")?;

// export back into a string
println!("{}", time_range.to_string()); // 2024-03-24T12:00:00+00:00/2024-03-25T11:59:59+00:00

DateRange


use time_range::{DateRange, Utc, Datelike, Timelike};

// create from start and end bounds
let start_at = NaiveDate::from_ymd(2024, 3, 1);
let end_at = NaiveDate::from_ymd(2024, 3, 13);
let date_range = DateRange::new(start_at, end_at);
println!("{:#?}", date_range); // DateRange[2024-03-01 -> 2024-03-13]

// parse from a string
let date_range = DateRange::parse("2024-03-20/2024-03-24").unwrap();
println!("{:#?}", date_range); // DateRange[2024-03-20 -> 2024-03-24]

// export back into a string
println!("{}", date_range.to_string()); // 2024-03-20/2024-03-24

操作

两种类型都支持成对操作:- contains - encapsulates - intersects - intersection - union - difference - symmetric_difference

依赖项

~1.3–2.2MB
~41K SLoC