playdate_system/
time.rs

1pub use sys::ffi::PDDateTime;
2
3use crate::api::Api;
4
5
6pub trait PDDateTimeExt {
7	fn to_epoch(&self) -> u32;
8	fn from_epoch(epoch: u32) -> Self;
9
10	fn from_epoch_to(dt: &mut Self, epoch: u32);
11}
12
13
14impl PDDateTimeExt for PDDateTime {
15	fn to_epoch(&self) -> u32 {
16		let f = super::api::Default::default().convert_date_time_to_epoch();
17		unsafe { f(self as *const _ as *mut _) }
18	}
19
20	fn from_epoch(epoch: u32) -> Self {
21		let mut dt = PDDateTime { year: 0,
22		                          month: 0,
23		                          day: 0,
24		                          weekday: 0,
25		                          hour: 0,
26		                          minute: 0,
27		                          second: 0 };
28		let f = super::api::Default::default().convert_epoch_to_date_time();
29		unsafe { f(epoch, &mut dt) };
30		dt
31	}
32
33	fn from_epoch_to(dt: &mut Self, epoch: u32) {
34		let f = super::api::Default::default().convert_epoch_to_date_time();
35		unsafe { f(epoch, dt) }
36	}
37}