use chrono::{prelude::Local, Timelike}; pub enum DayPart { LocalNow, } pub fn get_moon_phase() -> f32 { let local_timestamp = Local::now(); let unixtime = suncalc::Timestamp(local_timestamp.timestamp_millis()); let moon_illumination = suncalc::moon_illumination(unixtime); moon_illumination.phase as f32 * 28.0 } pub fn get_seconds_since_midnight(which: DayPart) -> i32 { let local_timestamp = Local::now(); let seconds = match which { DayPart::LocalNow => local_timestamp.time().num_seconds_from_midnight(), }; seconds as i32 } pub fn get_hms(which: DayPart) -> (u8, u8, u8) { let mut seconds = get_seconds_since_midnight(which); let hours = seconds / 3600; seconds -= hours * 3600; let minutes = seconds / 60; seconds -= hours * 60; (hours as u8, minutes as u8, seconds as u8) }