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); }