Skip to main content

date_differencer/diff/
chrono_support.rs

1use chrono::{DateTime, Datelike, NaiveDateTime, Timelike};
2
3use super::DateTimeParts;
4
5impl<Tz> DateTimeParts for DateTime<Tz>
6where
7    Tz: chrono::TimeZone,
8    DateTime<Tz>: Ord,
9{
10    #[inline]
11    fn year(&self) -> i32 {
12        Datelike::year(self)
13    }
14
15    #[inline]
16    fn month(&self) -> u8 {
17        Datelike::month(self) as u8
18    }
19
20    #[inline]
21    fn day(&self) -> u8 {
22        Datelike::day(self) as u8
23    }
24
25    #[inline]
26    fn hour(&self) -> u8 {
27        Timelike::hour(self) as u8
28    }
29
30    #[inline]
31    fn minute(&self) -> u8 {
32        Timelike::minute(self) as u8
33    }
34
35    #[inline]
36    fn second(&self) -> u8 {
37        Timelike::second(self) as u8
38    }
39
40    #[inline]
41    fn nanosecond(&self) -> u32 {
42        Timelike::nanosecond(self)
43    }
44}
45
46impl DateTimeParts for NaiveDateTime {
47    #[inline]
48    fn year(&self) -> i32 {
49        Datelike::year(self)
50    }
51
52    #[inline]
53    fn month(&self) -> u8 {
54        Datelike::month(self) as u8
55    }
56
57    #[inline]
58    fn day(&self) -> u8 {
59        Datelike::day(self) as u8
60    }
61
62    #[inline]
63    fn hour(&self) -> u8 {
64        Timelike::hour(self) as u8
65    }
66
67    #[inline]
68    fn minute(&self) -> u8 {
69        Timelike::minute(self) as u8
70    }
71
72    #[inline]
73    fn second(&self) -> u8 {
74        Timelike::second(self) as u8
75    }
76
77    #[inline]
78    fn nanosecond(&self) -> u32 {
79        Timelike::nanosecond(self)
80    }
81}