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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#[derive(Debug, PartialEq)]
pub enum Day {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday,
}

#[derive(Debug, PartialEq)]
pub enum Month {
    January,
    February,
    March,
    April,
    May,
    June,
    July,
    August,
    September,
    October,
    November,
    December,
}

#[derive(Debug, PartialEq)]
pub struct Zone {
    pub sign: bool,
    pub hour_offset: u8,
    pub minute_offset: u8,
}

#[derive(Debug, PartialEq)]
pub struct Time {
    pub hour: u8,
    pub minute: u8,
    pub second: u8,
}

#[derive(Debug, PartialEq)]
pub struct TimeWithZone {
    pub time: Time,
    pub zone: Zone,
}

#[derive(Debug, PartialEq)]
pub struct Date {
    pub day: u8,
    pub month: Month,
    pub year: usize,
}

#[derive(Debug, PartialEq)]
pub struct DateTime {
    pub day_name: Option<Day>,
    pub date: Date,
    pub time: TimeWithZone,
}