Skip to content
This repository has been archived by the owner on Feb 19, 2023. It is now read-only.

Commit

Permalink
Add method to find difference between datetimes
Browse files Browse the repository at this point in the history
  • Loading branch information
samueldple committed Oct 18, 2019
1 parent 9a30857 commit 9467968
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions src/time_tuple.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::date_time_tuple::DateTimeTuple;
use date_utils;
use regex::Regex;
use std::cmp::Ordering;
Expand Down Expand Up @@ -256,6 +257,30 @@ impl Duration {
}
}

/// Calculates the `Duration` between two `DateTimeTuple`s.
pub fn between(dt1: DateTimeTuple, dt2: DateTimeTuple) -> Duration {
if dt1 == dt2 {
return Duration { h: 0, m: 0, s: 0 };
}
let smaller: DateTimeTuple;
let greater: DateTimeTuple;
if dt1 < dt2 {
smaller = dt1;
greater = dt2;
} else {
smaller = dt2;
greater = dt1;
}
let days_between = greater.get_date().to_days() - greater.get_date().to_days();
let time_between = if days_between == 0 {
Duration::from(greater.get_time()) - Duration::from(smaller.get_time())
} else {
Duration::from(greater.get_time()) + Duration::new(24, 0, 0)
- Duration::from(smaller.get_time())
};
time_between + Duration::new(24 * (days_between - 1), 0, 0)
}

pub fn get_hours(self) -> u32 {
self.h
}
Expand Down

0 comments on commit 9467968

Please sign in to comment.