Skip to content

An add-on for chrono that creates a period for tracking durations that have a specific start date.

License

Notifications You must be signed in to change notification settings

jwir3/chrono_period

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chrono_period

Crate Docs.rs Build Status Maintenance

An add-on for chrono that creates a period for tracking durations that have a specific start date.

Installation

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"

Usage

You can create NaivePeriod instances from either two instances of NaiveDateTime:

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);

or from a NaiveDateTime and a 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));

Once created, NaivePeriods can be used to intersect with one another:

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());

Roadmap

Currently, only time periods without time zones are handled. It would be nice if we also handled intersections of dates/times with offsets.

About

An add-on for chrono that creates a period for tracking durations that have a specific start date.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Languages