35 lines
858 B
Rust
35 lines
858 B
Rust
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)
|
|
}
|