time_conversion/
time_conversion.rs1use rust_jpl::{CalendarDate, JulianDate};
6
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 println!("=== Time Conversion Examples ===\n");
9
10 println!("Example 1: Calendar to Julian Date");
12 let cal = CalendarDate::new(2024, 1, 15, 12, 0, 0.0);
13 let jd = cal.to_julian()?;
14 println!(
15 " Calendar: {}-{:02}-{:02} {:02}:{:02}:{:02}",
16 cal.year, cal.month, cal.day, cal.hour, cal.minute, cal.second as i32
17 );
18 println!(" Julian Date: {:.6}\n", jd.as_f64());
19
20 println!("Example 2: Julian to Calendar Date");
22 let jd2 = JulianDate::new(2460327.0); let cal2 = jd2.to_calendar();
24 println!(" Julian Date: {:.6}", jd2.as_f64());
25 println!(
26 " Calendar: {}-{:02}-{:02} {:02}:{:02}:{:02}\n",
27 cal2.year, cal2.month, cal2.day, cal2.hour, cal2.minute, cal2.second as i32
28 );
29
30 println!("Example 3: Direct conversion");
32 let jd3 = JulianDate::from_calendar(2000, 1, 1, 12, 0, 0.0)?;
33 println!(" January 1, 2000 12:00:00 UTC");
34 println!(" Julian Date: {:.6}\n", jd3.as_f64());
35
36 println!("Example 4: Historical Dates");
38 let dates = vec![
39 (1969, 7, 20, 20, 17, 0.0, "Apollo 11 Moon Landing"),
40 (1986, 1, 28, 11, 39, 0.0, "Space Shuttle Challenger"),
41 (2021, 7, 20, 9, 13, 0.0, "Blue Origin NS-16"),
42 ];
43
44 for (year, month, day, hour, minute, second, event) in dates {
45 let jd = JulianDate::from_calendar(year, month, day, hour, minute, second)?;
46 println!(" {}: JD {:.6}", event, jd.as_f64());
47 }
48
49 Ok(())
50}