pub const SECONDS_PER_DAY: f64 = 86_400.0;
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct LunarDate {
pub lunation_index: i64,
pub day_in_lunation: f64,
}
impl LunarDate {
pub fn from_elapsed_days(elapsed_days: f64) -> Self {
let lunation_length = crate::SYNODIC_MONTH_S / SECONDS_PER_DAY;
let lunation_index = (elapsed_days / lunation_length).floor() as i64;
let day_in_lunation = elapsed_days - lunation_index as f64 * lunation_length;
Self {
lunation_index,
day_in_lunation,
}
}
}