date_differencer/diff/
time_support.rs1use time::{OffsetDateTime, PrimitiveDateTime, UtcDateTime};
2
3use super::DateTimeParts;
4
5impl DateTimeParts for PrimitiveDateTime {
6 #[inline]
7 fn year(&self) -> i32 {
8 let (year, ..) = self.to_calendar_date();
9
10 year
11 }
12
13 #[inline]
14 fn month(&self) -> u8 {
15 let (_, month, _) = self.to_calendar_date();
16
17 u8::from(month)
18 }
19
20 #[inline]
21 fn day(&self) -> u8 {
22 let (_, _, day) = self.to_calendar_date();
23
24 day
25 }
26
27 #[inline]
28 fn hour(&self) -> u8 {
29 let (hour, ..) = self.as_hms_nano();
30
31 hour
32 }
33
34 #[inline]
35 fn minute(&self) -> u8 {
36 let (_, minute, ..) = self.as_hms_nano();
37
38 minute
39 }
40
41 #[inline]
42 fn second(&self) -> u8 {
43 let (_, _, second, _) = self.as_hms_nano();
44
45 second
46 }
47
48 #[inline]
49 fn nanosecond(&self) -> u32 {
50 let (_, _, _, nanosecond) = self.as_hms_nano();
51
52 nanosecond
53 }
54}
55
56impl DateTimeParts for OffsetDateTime {
57 #[inline]
58 fn year(&self) -> i32 {
59 let (year, ..) = self.to_calendar_date();
60
61 year
62 }
63
64 #[inline]
65 fn month(&self) -> u8 {
66 let (_, month, _) = self.to_calendar_date();
67
68 u8::from(month)
69 }
70
71 #[inline]
72 fn day(&self) -> u8 {
73 let (_, _, day) = self.to_calendar_date();
74
75 day
76 }
77
78 #[inline]
79 fn hour(&self) -> u8 {
80 let (hour, ..) = self.to_hms_nano();
81
82 hour
83 }
84
85 #[inline]
86 fn minute(&self) -> u8 {
87 let (_, minute, ..) = self.to_hms_nano();
88
89 minute
90 }
91
92 #[inline]
93 fn second(&self) -> u8 {
94 let (_, _, second, _) = self.to_hms_nano();
95
96 second
97 }
98
99 #[inline]
100 fn nanosecond(&self) -> u32 {
101 let (_, _, _, nanosecond) = self.to_hms_nano();
102
103 nanosecond
104 }
105}
106
107impl DateTimeParts for UtcDateTime {
108 #[inline]
109 fn year(&self) -> i32 {
110 let (year, ..) = self.date().to_calendar_date();
111
112 year
113 }
114
115 #[inline]
116 fn month(&self) -> u8 {
117 let (_, month, _) = self.date().to_calendar_date();
118
119 u8::from(month)
120 }
121
122 #[inline]
123 fn day(&self) -> u8 {
124 let (_, _, day) = self.date().to_calendar_date();
125
126 day
127 }
128
129 #[inline]
130 fn hour(&self) -> u8 {
131 let (hour, ..) = self.as_hms_nano();
132
133 hour
134 }
135
136 #[inline]
137 fn minute(&self) -> u8 {
138 let (_, minute, ..) = self.as_hms_nano();
139
140 minute
141 }
142
143 #[inline]
144 fn second(&self) -> u8 {
145 let (_, _, second, _) = self.as_hms_nano();
146
147 second
148 }
149
150 #[inline]
151 fn nanosecond(&self) -> u32 {
152 let (_, _, _, nanosecond) = self.as_hms_nano();
153
154 nanosecond
155 }
156}