summaryrefslogtreecommitdiff
path: root/src/web_frontend/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/web_frontend/util.rs')
-rw-r--r--src/web_frontend/util.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/web_frontend/util.rs b/src/web_frontend/util.rs
new file mode 100644
index 0000000..cffef0e
--- /dev/null
+++ b/src/web_frontend/util.rs
@@ -0,0 +1,50 @@
+use chrono::{NaiveDate, Utc};
+use chrono::Datelike;
+
+#[derive(Debug)]
+pub struct DateRange {
+ start_year : i32,
+ start_month : u32,
+ end_year : i32,
+ end_month : u32,
+}
+
+impl DateRange {
+ pub fn new(start : chrono::NaiveDate, end : chrono::NaiveDate) -> DateRange {
+ DateRange {
+ start_year : start.year(),
+ start_month : start.month(),
+ end_year : end.year(),
+ end_month : end.month(),
+ }
+ }
+}
+
+impl Iterator for DateRange {
+ type Item = chrono::NaiveDate;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ println!("next called");
+ if (self.start_year <= self.end_year) {
+ if(self.start_month <= self.end_month) {
+ let mut tmp = self.start_year.to_string();
+ if self.start_month < 10 {
+ tmp.push_str("-0");
+ } else {
+ tmp.push_str("-");
+ }
+ tmp.push_str(&self.start_month.to_string());
+ tmp.push_str("-01");
+ if self.start_month < 13 {
+ self.start_month = self.start_month + 1;
+ } else {
+ self.start_month = 1;
+ self.start_year = self.start_year + 1;
+ }
+ println!("{}", tmp);
+ return Some(chrono::NaiveDate::parse_from_str(&tmp, "%Y-%m-%d").unwrap())
+ }
+ }
+ None
+ }
+}