1#![warn(clippy::cargo, clippy::nursery, clippy::pedantic)]
9
10use hifitime::{Epoch, TimeUnits};
13use std::str::FromStr;
14
15pub fn msd_now_flt() -> f64 {
20 let dt_tm = Epoch::now().unwrap();
21 let jde_tt = dt_tm.to_jde_tt_days();
22
23 let mars_sol_date_now_float: f64 = (jde_tt - 2405522.0028779) / 1.0274912517;
24 return mars_sol_date_now_float;
25}
26
27pub fn mtc_now_flt() -> f64 {
28 let mars_sol_date_now_float = msd_now_flt();
29
30 let martian_coordinated_time_now_float: f64 = mars_sol_date_now_float.rem_euclid(1.0) * 24.0;
31 return martian_coordinated_time_now_float;
32}
33
34pub fn mtc_now_fmt() -> String {
35 let martian_coordinated_time_now_float = mtc_now_flt();
36
37 let martian_coordinated_time_now_formatted = TimeUnits::hours(martian_coordinated_time_now_float);
38 return martian_coordinated_time_now_formatted.to_string();
39}
40
41pub fn msd_flt(date: &str, time: &str, scale: &str) -> f64 {
44 let date_time_scale = date.to_owned() + " " + time + " " + scale;
45
46 let dt_tm = Epoch::from_str(&date_time_scale);
47 let jde_tt = dt_tm.unwrap().to_jde_tt_days();
48
49 let mars_sol_date_float: f64 = (jde_tt - 2405522.0028779) / 1.0274912517;
50 return mars_sol_date_float;
51}
52
53pub fn mtc_flt(date: &str, time: &str, scale: &str) -> f64 {
54 let mars_sol_date_float = msd_flt(date, time, scale);
55
56 let martian_coordinated_time_float: f64 = mars_sol_date_float.rem_euclid(1.0) * 24.0;
57 return martian_coordinated_time_float;
58}
59
60pub fn mtc_fmt(date: &str, time: &str, scale: &str) -> String {
61 let martian_coordinated_time_float = mtc_flt(date, time, scale);
62
63 let martian_coordinated_time_formatted = TimeUnits::hours(martian_coordinated_time_float);
64 return martian_coordinated_time_formatted.to_string();
65}