An add-on for chrono that creates a period for tracking durations that have a specific start date.
This is an add-on to chrono, so you will want to install this in combination with that library. Inside of your Cargo.toml
, add the following:
[dependencies]
chrono = "^0.4.10"
chrono_period = "^0.1.0"
You can create NaivePeriod
instances from either two instances of NaiveDateTime
:
``` let start = NaiveDateTime::new(NaiveDate::fromymd(2020, 1, 1), NaiveTime::fromhms(0, 0, 0)); let end = NaiveDateTime::new(NaiveDate::fromymd(2021, 1, 1), NaiveTime::fromhms(0, 0, 0));
let np = NaivePeriod::new(start, end); ```
or from a NaiveDateTime
and a Duration
:
``` let start = NaiveDateTime::new(NaiveDate::fromymd(2020, 1, 1), NaiveTime::fromhms(0, 0, 0));
let np = NaivePeriod::fromstartduration(start, Duration::days(366)); ```
Once created, NaivePeriod
s can be used to intersect with one another:
``` let start = NaiveDateTime::new(NaiveDate::fromymd(2020, 1, 1), NaiveTime::fromhms(0, 0, 0));
let np1 = NaivePeriod::fromstartduration(start, Duration::days(366));
let end = NaiveDateTime::new(NaiveDate::fromymd(2021, 1, 1), NaiveTime::fromhms(0, 0, 0));
let other = NaivePeriod::new(start, end);
let intersection = np.getintersectionwith(other);
assert_eq!(np1, intersection.unwrap()); ```
Currently, only time periods without time zones are handled. It would be nice if we also handled intersections of dates/times with offsets.