dit-rs/stardit/src/main.rs

57 lines
1.3 KiB
Rust
Raw Normal View History

2023-02-21 15:33:12 +01:00
pub use libstardit::libstardit::unix_to_stardit;
2023-02-21 15:48:27 +01:00
pub use std::time::{SystemTime, UNIX_EPOCH};
2023-02-21 15:33:12 +01:00
fn main() {
let current_timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs_f64();
let stardit = unix_to_stardit(current_timestamp);
let day_stop: u16 = match is_leap_year(stardit.year as i32) {
false => 365,
true => 366,
};
print!("déc ");
for day_number_wkd in 0..10 {
let day_name = unix_to_stardit((day_number_wkd as f64 * 86400.0) + 864000.0).day_name;
let day_name_abbr = match day_name.char_indices().nth(3) {
None => day_name,
Some((idx, _)) => day_name[..idx].to_string(),
};
if day_number_wkd == stardit.day % 10 {
print!("\x1b[1m{}\x1b[0m ", day_name_abbr);
} else {
print!("{} ", day_name_abbr)
}
}
print!("\n 0 ");
let mut day_i: u16 = 1;
while day_i <= day_stop {
if day_i % 10 == 0 {
print!("\n");
if day_i / 10 == stardit.day / 10 {
print!("\x1b[1m{}\x1b[0m ", format!("{: >3}", day_i / 10));
} else {
print!("{} ", format!("{: >3}", day_i / 10));
}
}
if day_i == stardit.day {
print!("\x1b[7m{}\x1b[0m ", format!("{: >3}", day_i));
} else {
print!("{} ", format!("{: >3}", day_i));
}
day_i += 1;
}
print!("\n");
}
fn is_leap_year(year: i32) -> bool {
2023-02-21 15:48:27 +01:00
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
2023-02-21 15:33:12 +01:00
}