use crate::types::{
planets::{
earth::{
calendar::{
constants::{
seconds::{
SECONDS_IN_DAY,
SECONDS_IN_HOUR,
SECONDS_IN_MINUTE,
SECONDS_IN_WEEK
}
},
}
}
}
};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Uptime {
pub weeks: u128,
pub days: u8,
pub hours: u8,
pub minutes: u8,
pub seconds: u8
}
impl Uptime {
pub const fn to_seconds(&self) -> u128 {
return (SECONDS_IN_WEEK * self.weeks) +
(SECONDS_IN_DAY * self.days as u128) +
(SECONDS_IN_HOUR * self.hours as u128) +
(SECONDS_IN_MINUTE * self.minutes as u128) +
self.seconds as u128;
}
pub(crate) const fn from_seconds(seconds: u128) -> Uptime {
return Uptime {
weeks: (seconds / SECONDS_IN_WEEK),
days: ((seconds % SECONDS_IN_WEEK) / SECONDS_IN_DAY) as u8,
hours: ((seconds % SECONDS_IN_DAY) / SECONDS_IN_HOUR) as u8,
minutes: ((seconds % SECONDS_IN_HOUR) / SECONDS_IN_MINUTE) as u8,
seconds: (seconds % SECONDS_IN_MINUTE) as u8
}
}
}