cftime_rs/
constants.rs

1const fn cumsum_cal(input: &[u8; 12]) -> [u32; 13] {
2    let mut out: [u32; 13] = [0; 13];
3    let mut i = 1;
4    while i < 13 {
5        out[i] = out[i - 1] + input[i - 1] as u32;
6        i += 1;
7    }
8    out
9}
10
11// DAYS CALENDARS
12pub const DAYS_PER_MONTH: [u8; 12] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
13pub const DAYS_PER_MONTH_LEAP: [u8; 12] = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
14pub const DAYS_PER_MONTH_360: [u8; 12] = [30; 12];
15
16// VARIOUS PRE-COMPUTED CONSTANTS
17pub const DAYS_PER_YEAR_LEAP: i64 = 366;
18pub const DAYS_PER_YEAR_NON_LEAP: i64 = 365;
19pub const SECONDS_PER_YEAR_LEAP: i64 = DAYS_PER_YEAR_LEAP * SECS_PER_DAY as i64;
20pub const SECONDS_PER_YEAR_NON_LEAP: i64 = DAYS_PER_YEAR_NON_LEAP * SECS_PER_DAY as i64;
21
22// CUMSUM DAYS CALENDARS
23pub const CUM_DAYS_PER_MONTH: [u32; 13] = cumsum_cal(&DAYS_PER_MONTH);
24pub const CUM_DAYS_PER_MONTH_LEAP: [u32; 13] = cumsum_cal(&DAYS_PER_MONTH_LEAP);
25pub const CUM_DAYS_PER_MONTH_360: [u32; 13] = cumsum_cal(&DAYS_PER_MONTH_360);
26
27// UNIX TIMESTAMP
28pub const UNIX_DEFAULT_YEAR: i64 = 1970;
29pub const UNIX_DEFAULT_MONTH: u8 = 1;
30pub const UNIX_DEFAULT_DAY: u8 = 1;
31
32// GENERALITIES
33pub const SECS_PER_HOUR: u32 = 3600;
34pub const SECS_PER_MINUTE: u32 = 60;
35pub const SECS_PER_DAY: u32 = 24 * SECS_PER_HOUR;
36
37pub const MONTHS: [&str; 12] = [
38    "January",
39    "February",
40    "March",
41    "April",
42    "May",
43    "June",
44    "July",
45    "August",
46    "September",
47    "October",
48    "November",
49    "December",
50];
51
52pub const MAX_NS: i64 = 1_000_000_000;