#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum Error {
InvalidYear,
InvalidMonth,
InvalidDay,
InvalidDayOfWeek,
InvalidHour,
InvalidMinute,
InvalidSecond,
OutOfRange,
InvalidTimestamp,
}
#[derive(Clone, Debug)]
pub struct DateTime {
pub year: u16,
pub month: u8,
pub day: u8,
pub day_of_week: DayOfWeek,
pub hour: u8,
pub minute: u8,
pub second: u8,
}
#[repr(u8)]
#[derive(Copy, Clone, Debug, PartialEq, Eq, Ord, PartialOrd, Hash)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[allow(missing_docs)]
pub enum DayOfWeek {
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
}
impl DateTime {
pub fn timestamp_millis(&self) -> Result<u64, Error> {
crate::datetime::epoch::datetime_to_millis(self)
}
pub fn from_timestamp_millis(millis: u64) -> Result<Self, Error> {
crate::datetime::epoch::millis_to_datetime(millis)
}
}