dit-rs/src/main.rs

50 lines
1.0 KiB
Rust

use std::time::{SystemTime,UNIX_EPOCH};
use chrono::{Duration,Datelike};
fn main() {
// DIT
let current_timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs_f64();
let current_dit = (current_timestamp - 12.0*3600.0) % 86400.0 / 86400.0;
let deca = (current_dit * 10.0 % 10.0) as u16;
let decim = (current_dit * 1000.0 % 100.0) as u16;
let desec = (current_dit * 100000.0 % 100.0) as u16;
// StarDIT
let date_opt = chrono::Utc::now().checked_add_signed(Duration::hours(-12));
let date = match date_opt {
Some(date) => date,
None => panic!("Time overflow"),
};
let year = date.year() + 10000;
let day = date.ordinal();
let day_name = match day % 10 {
0 => "zéridi",
1 => "unidi",
2 => "duodi",
3 => "tridi",
4 => "quartidi",
5 => "quintidi",
6 => "sextidi",
7 => "septidi",
8 => "octidi",
9 => "nonidi",
_ => "?",
};
let weekade = day / 10;
// Display
println!("{}.{}.{}\n{}, décade {}, {}", deca, format!("{:0>2}", decim), format!("{:0>2}", desec), year, weekade, day_name);
}