dit-rs/libstardit/src/lib.rs

40 lines
807 B
Rust

extern crate chrono;
pub mod libstardit {
use chrono::{Datelike, LocalResult, TimeZone};
pub struct StarDIT {
pub year: u16,
pub weekade: u16,
pub day_name: String,
pub day: u16,
}
pub fn unix_to_stardit(unix: f64) -> StarDIT {
let date = match chrono::Utc.timestamp_millis_opt(((unix as i64) - 12 * 3600) * 1000) {
LocalResult::Single(date) => date,
_ => panic!("Incorrect timestamp_millis"),
};
let day = date.ordinal() as u16;
StarDIT {
year: (date.year() + 10000) as u16,
weekade: day / 10,
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",
_ => "?",
}
.to_string(),
day,
}
}
}