hutools 0.0.2

All tools sets
Documentation
use crate::date::{
    between_days, between_hours, between_minutes, between_months, between_ms, between_seconds,
    between_years,
};
use chrono::{Date, TimeZone};

pub enum Unit {
    Year,
    Month,
    Day,
    Hour,
    Minute,
    Second,
    Micro,
}

pub fn between<Tz>(date_range: (Date<Tz>, Date<Tz>), unit: Unit) -> Option<i64>
where
    Tz: TimeZone,
{
    match unit {
        Unit::Year => between_years(date_range),
        Unit::Month => between_months(date_range),
        Unit::Day => between_days(date_range),
        Unit::Hour => between_hours(date_range),
        Unit::Minute => between_minutes(date_range),
        Unit::Second => between_seconds(date_range),
        Unit::Micro => between_ms(date_range),
    }
}

pub fn between_abs<Tz>(date_range: (Date<Tz>, Date<Tz>), unit: Unit) -> Option<u64>
where
    Tz: TimeZone,
{
    let result = between(date_range, unit);
    result.map(|x| x.abs()).map(|result| result as u64)
}