dit-rs/libstardit/src/lib.rs

40 lines
807 B
Rust
Raw Normal View History

2023-02-21 15:33:12 +01:00
extern crate chrono;
pub mod libstardit {
2023-02-21 15:48:27 +01:00
use chrono::{Datelike, LocalResult, TimeZone};
2023-02-21 15:33:12 +01:00
pub struct StarDIT {
pub year: u16,
pub weekade: u16,
pub day_name: String,
2023-02-21 15:48:27 +01:00
pub day: u16,
2023-02-21 15:33:12 +01:00
}
pub fn unix_to_stardit(unix: f64) -> StarDIT {
2023-02-21 15:48:27 +01:00
let date = match chrono::Utc.timestamp_millis_opt(((unix as i64) - 12 * 3600) * 1000) {
2023-02-21 15:33:12 +01:00
LocalResult::Single(date) => date,
_ => panic!("Incorrect timestamp_millis"),
};
let day = date.ordinal() as u16;
2024-03-15 11:56:14 +01:00
StarDIT {
2023-02-21 15:33:12 +01:00
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",
_ => "?",
2023-02-21 15:48:27 +01:00
}
.to_string(),
2024-03-15 11:56:14 +01:00
day,
}
2023-02-21 15:33:12 +01:00
}
}