use crate::types::{
planets::{
earth::{
calendar::{
constants::{
seconds::{SECONDS_IN_MINUTE, SECONDS_IN_HOUR}
},
}
}
}
};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum Sign {
Signed = 0,
#[default]
Unsigned = 1
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Zone {
pub sign: Sign,
pub hours: u8,
pub minutes: u8,
pub seconds: u8
}
impl Zone {
pub const fn to_seconds(&self) -> u32 {
return ((self.hours as u32) * SECONDS_IN_HOUR as u32) +
((self.minutes as u32) * SECONDS_IN_MINUTE as u32) +
(self.seconds as u32);
}
pub(crate) const fn from_seconds(sign: Sign, seconds: u32) -> Zone {
return Zone {
sign: sign,
hours: (seconds / SECONDS_IN_HOUR as u32) as u8,
minutes: ((seconds % SECONDS_IN_HOUR as u32) / SECONDS_IN_MINUTE as u32) as u8,
seconds: (seconds % SECONDS_IN_MINUTE as u32) as u8
}
}
}