#date-time #date #time #calendar

chrono_period

为chrono创建一个特定开始日期的持续时间跟踪的插件

1 个不稳定版本

0.1.0 2019年12月29日

#408日期和时间

每月21次下载

自定义许可

15KB
104

chrono_period

为chrono创建一个特定开始日期的持续时间跟踪的插件。

安装

这是一个chrono的插件,因此您需要与该库一起安装。在您的Cargo.toml中,添加以下内容

[dependencies]
chrono = "^0.4.10"
chrono_period = "^0.1.0"

用法

您可以从两个NaiveDateTime实例创建NaivePeriod实例

let start = NaiveDateTime::new(NaiveDate::from_ymd(2020, 1, 1), NaiveTime::from_hms(0, 0, 0));
let end = NaiveDateTime::new(NaiveDate::from_ymd(2021, 1, 1), NaiveTime::from_hms(0, 0, 0));

let np = NaivePeriod::new(start, end);

或者从一个NaiveDateTime和一个Duration

let start = NaiveDateTime::new(NaiveDate::from_ymd(2020, 1, 1), NaiveTime::from_hms(0, 0, 0));

let np = NaivePeriod::from_start_duration(start, Duration::days(366));

创建后,NaivePeriod可用于相互交集

let start = NaiveDateTime::new(NaiveDate::from_ymd(2020, 1, 1), NaiveTime::from_hms(0, 0, 0));

let np1 = NaivePeriod::from_start_duration(start, Duration::days(366));

let end = NaiveDateTime::new(NaiveDate::from_ymd(2021, 1, 1), NaiveTime::from_hms(0, 0, 0));

let other = NaivePeriod::new(start, end);

let intersection = np.get_intersection_with(other);

assert_eq!(np1, intersection.unwrap());

路线图

目前,仅处理无时区的时间段。如果我们也处理具有偏移量的日期/时间交集,那就更好了。

依赖项

~1MB
~18K SLoC