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