mars_t/
lib.rs

1// The Universal Permissive License (UPL), Version 1.0
2// Copyright © 2023 Piotr Bajdek
3
4// LIBRARY
5
6// CLIPPY LINTS
7
8#![warn(clippy::cargo, clippy::nursery, clippy::pedantic)]
9
10// IMPORTS
11
12use hifitime::{Epoch, TimeUnits};
13use std::str::FromStr;
14
15// FUNCTIONS
16
17// CURRENT DATA AND TIME
18
19pub 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
41// CUSTOMISED DATE AND TIME
42
43pub 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}