use std::time::Duration;
pub const SECONDS_IN_MINUTE: u64 = 60;
pub const SECONDS_IN_HOUR: u64 = SECONDS_IN_MINUTE * 60;
pub const SECONDS_IN_DAY: u64 = SECONDS_IN_HOUR * HOURS_IN_DAY;
pub const SECONDS_IN_QUARTER_MIN: u64 = SECONDS_IN_DAY * 90;
pub const SECONDS_IN_QUARTER_MAX: u64 = SECONDS_IN_DAY * 92;
pub const SECONDS_IN_MONTH_MIN: u64 = SECONDS_IN_DAY * 28;
pub const SECONDS_IN_MONTH_MAX: u64 = SECONDS_IN_DAY * 31;
pub const MINUTES_IN_HOUR: u64 = 60;
pub const HOURS_IN_DAY: u64 = 24;
pub const MONTHS_IN_YEAR: u64 = 12;
pub const MONTH_DAYS: [u64; MONTHS_IN_YEAR as usize] =
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
pub const REGULAR_YEAR_MONTH_DAYS: [u64; MONTHS_IN_YEAR as usize] =
[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
pub const LEAP_YEAR_MONTH_DAYS: [u64; MONTHS_IN_YEAR as usize] =
[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
pub const ONE_DAY_DURATION: Duration = Duration::from_secs(SECONDS_IN_DAY);
pub const ONE_LEAP_YEAR_DURATION: Duration = Duration::from_secs(SECONDS_IN_DAY * LEAP_YEAR_DAYS);
pub const ONE_YEAR_DURATION: Duration = Duration::from_secs(SECONDS_IN_DAY * REGULAR_YEAR_DAYS);
pub const LEAP_YEAR_DAYS: u64 = 366;
pub const LEAP_YEAR_SECONDS: u64 = 366 * SECONDS_IN_DAY;
pub const REGULAR_YEAR_DAYS: u64 = 365;
pub const THREE_REGULAR_YEAR_DAYS: u64 = 365 * 3;
pub const REGULAR_YEAR_SECONDS: u64 = 365 * SECONDS_IN_DAY;
pub const FOUR_YEARS_DAYS: u64 = (REGULAR_YEAR_DAYS << 2) + 1;
pub const FOUR_YEARS_SECONDS: u64 = FOUR_YEARS_DAYS * SECONDS_IN_DAY;
pub const UNIX_EPOCH_YEAR: u64 = 1970;
pub const MILLISECONDS_IN_SECOND: u64 = 1000;
pub const MICROSECONDS_IN_SECOND: u64 = MILLISECONDS_IN_SECOND * 1000;