k8s_openapi_ext/ext/
time.rs1use super::*;
2
3pub trait TimeExt: Sized {
4 fn now() -> Self;
5
6 fn to_system_time(&self) -> std::time::SystemTime;
7
8 fn try_from_system_time(time: std::time::SystemTime) -> Result<Self, jiff::Error>;
9
10 #[cfg(feature = "time")]
11 fn to_utc_date_time(&self) -> ::time::UtcDateTime;
12
13 #[cfg(feature = "time")]
14 fn try_from_utc_date_time(time: ::time::UtcDateTime) -> Result<Self, jiff::Error>;
15
16 fn from_zoned(time: jiff::Zoned) -> Self;
17
18 fn try_to_zoned(&self) -> Result<jiff::Zoned, jiff::Error> {
19 let system_time = self.to_system_time();
20 jiff::Zoned::try_from(system_time)
21 }
22}
23
24impl TimeExt for metav1::Time {
25 fn now() -> Self {
26 Self(jiff::Timestamp::now())
27 }
28
29 fn to_system_time(&self) -> std::time::SystemTime {
30 self.0.into()
31 }
32
33 fn try_from_system_time(time: std::time::SystemTime) -> Result<Self, jiff::Error> {
34 time.try_into().map(Self)
35 }
36
37 fn from_zoned(time: jiff::Zoned) -> Self {
38 Self(time.into())
39 }
40
41 #[cfg(feature = "time")]
42 fn to_utc_date_time(&self) -> ::time::UtcDateTime {
43 self.to_system_time().into()
44 }
45
46 #[cfg(feature = "time")]
47 fn try_from_utc_date_time(time: ::time::UtcDateTime) -> Result<Self, jiff::Error> {
48 Self::try_from_system_time(time.into())
49 }
50}