time_conversion/
time_conversion.rs

1//! Time conversion example
2//!
3//! Demonstrates conversion between calendar dates and Julian dates
4
5use rust_jpl::{CalendarDate, JulianDate};
6
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8    println!("=== Time Conversion Examples ===\n");
9
10    // Example 1: Convert calendar date to Julian date
11    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    // Example 2: Convert Julian date to calendar date
21    println!("Example 2: Julian to Calendar Date");
22    let jd2 = JulianDate::new(2460327.0); // January 15, 2024
23    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    // Example 3: Using from_calendar directly
31    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    // Example 4: Historical dates
37    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}