1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const fn cumsum_cal(input: &[u8; 12]) -> [u32; 13] {
    let mut out: [u32; 13] = [0; 13];
    let mut i = 1;
    while i < 13 {
        out[i] = out[i - 1] + input[i - 1] as u32;
        i += 1;
    }
    out
}

// DAYS CALENDARS
pub const DAYS_PER_MONTH: [u8; 12] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
pub const DAYS_PER_MONTH_LEAP: [u8; 12] = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
pub const DAYS_PER_MONTH_360: [u8; 12] = [30; 12];

// CUMSUM DAYS CALENDARS
pub const CUM_DAYS_PER_MONTH: [u32; 13] = cumsum_cal(&DAYS_PER_MONTH);
pub const CUM_DAYS_PER_MONTH_LEAP: [u32; 13] = cumsum_cal(&DAYS_PER_MONTH_LEAP);
pub const CUM_DAYS_PER_MONTH_360: [u32; 13] = cumsum_cal(&DAYS_PER_MONTH_360);

// UNIX TIMESTAMP
pub const UNIX_DEFAULT_YEAR: i64 = 1970;
pub const UNIX_DEFAULT_MONTH: u8 = 1;
pub const UNIX_DEFAULT_DAY: u8 = 1;

// GENERALITIES
pub const SECS_PER_HOUR: u32 = 3600;
pub const SECS_PER_MINUTE: u32 = 60;
pub const SECS_PER_DAY: u32 = 24 * SECS_PER_HOUR;

pub const MONTHS: [&str; 12] = [
    "January",
    "February",
    "March",
    "April",
    "May",
    "June",
    "July",
    "August",
    "September",
    "October",
    "November",
    "December",
];

pub const MAX_NS: i64 = 1_000_000_000;