dit-rs/libstardit/src/lib.rs

39 lines
813 B
Rust

extern crate chrono;
pub mod libstardit {
use chrono::{TimeZone, Datelike, LocalResult};
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;
return 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: day,
};
}
}