How to create a vector of dates between a start and end date in Rust

1 Answer

0 votes
use chrono::{NaiveDate, Duration};

fn generate_dates(start: NaiveDate, end: NaiveDate) -> Vec<NaiveDate> {
    let mut dates = Vec::new();

    if start > end {
        return dates; // empty
    }

    let mut current = start;
    while current <= end {
        dates.push(current);
        current = current + Duration::days(1);
    }

    dates
}

fn main() {
    let start = NaiveDate::from_ymd_opt(2026, 1, 3).unwrap();
    let end   = NaiveDate::from_ymd_opt(2026, 1, 12).unwrap();

    let dates = generate_dates(start, end);

    println!("Generated {} dates:", dates.len());
    for d in dates {
        println!("{}", d.format("%Y-%m-%d"));
    }
}



/*
run:

Generated 10 dates:
2026-01-03
2026-01-04
2026-01-05
2026-01-06
2026-01-07
2026-01-08
2026-01-09
2026-01-10
2026-01-11
2026-01-12

*/

 



answered Jan 31 by avibootz
...