|
8 | 8 | * ./build/time_example |
9 | 9 | */ |
10 | 10 |
|
11 | | -#include <tempoch/tempoch.hpp> |
12 | | -#include <iostream> |
13 | 11 | #include <iomanip> |
| 12 | +#include <iostream> |
| 13 | +#include <qtty/qtty.hpp> |
| 14 | +#include <tempoch/tempoch.hpp> |
14 | 15 |
|
15 | 16 | int main() { |
16 | | - using namespace tempoch; |
17 | | - |
18 | | - // --------------------------------------------------------------- |
19 | | - // UTC → JulianDate → MJD round-trip |
20 | | - // --------------------------------------------------------------- |
21 | | - UTC utc(2026, 7, 15, 22, 0, 0); |
22 | | - std::cout << "UTC: " << utc.year << "-" |
23 | | - << std::setfill('0') << std::setw(2) << (int)utc.month << "-" |
24 | | - << std::setw(2) << (int)utc.day << " " |
25 | | - << std::setw(2) << (int)utc.hour << ":" |
26 | | - << std::setw(2) << (int)utc.minute << ":" |
27 | | - << std::setw(2) << (int)utc.second << "\n"; |
28 | | - |
29 | | - auto jd = JulianDate::from_utc(utc); |
30 | | - std::cout << "JD: " << std::fixed << std::setprecision(6) << jd.value() << "\n"; |
31 | | - |
32 | | - auto mjd = MJD::from_jd(jd); |
33 | | - std::cout << "MJD: " << std::fixed << std::setprecision(6) << mjd.value() << "\n"; |
34 | | - |
35 | | - auto utc2 = mjd.to_utc(); |
36 | | - std::cout << "Back: " << utc2.year << "-" |
37 | | - << std::setfill('0') << std::setw(2) << (int)utc2.month << "-" |
38 | | - << std::setw(2) << (int)utc2.day << " " |
39 | | - << std::setw(2) << (int)utc2.hour << ":" |
40 | | - << std::setw(2) << (int)utc2.minute << ":" |
41 | | - << std::setw(2) << (int)utc2.second << "\n\n"; |
42 | | - |
43 | | - // --------------------------------------------------------------- |
44 | | - // J2000 epoch and Julian centuries |
45 | | - // --------------------------------------------------------------- |
46 | | - auto j2000 = JulianDate::J2000(); |
47 | | - std::cout << "J2000.0: " << j2000.value() << "\n"; |
48 | | - std::cout << "Centuries since J2000: " << jd.julian_centuries() << "\n\n"; |
49 | | - |
50 | | - // --------------------------------------------------------------- |
51 | | - // Period intersection |
52 | | - // --------------------------------------------------------------- |
53 | | - Period night(60200.0, 60200.5); |
54 | | - Period obs(60200.2, 60200.8); |
55 | | - auto overlap = night.intersection(obs); |
56 | | - std::cout << "Night: [" << night.start_mjd() << ", " << night.end_mjd() << "]\n"; |
57 | | - std::cout << "Obs: [" << obs.start_mjd() << ", " << obs.end_mjd() << "]\n"; |
58 | | - std::cout << "Overlap: [" << overlap.start_mjd() << ", " << overlap.end_mjd() << "]\n"; |
59 | | - std::cout << "Overlap duration: " << overlap.duration_days() * 24.0 << " hours\n"; |
60 | | - |
61 | | - return 0; |
| 17 | + using namespace tempoch; |
| 18 | + |
| 19 | + // --------------------------------------------------------------- |
| 20 | + // UTC → JulianDate → MJD round-trip |
| 21 | + // --------------------------------------------------------------- |
| 22 | + UTC utc(2026, 7, 15, 22, 0, 0); |
| 23 | + std::cout << "UTC: " << utc << "\n"; |
| 24 | + |
| 25 | + auto jd = JulianDate::from_utc(utc); |
| 26 | + std::cout << "JD: " << std::fixed << std::setprecision(6) << jd << "\n"; |
| 27 | + |
| 28 | + auto mjd = MJD::from_jd(jd); |
| 29 | + std::cout << "MJD: " << std::fixed << std::setprecision(6) << mjd << "\n"; |
| 30 | + |
| 31 | + auto utc2 = mjd.to_utc(); |
| 32 | + std::cout << "Back: " << utc2 << "\n\n"; |
| 33 | + |
| 34 | + // --------------------------------------------------------------- |
| 35 | + // J2000 epoch and Julian centuries |
| 36 | + // --------------------------------------------------------------- |
| 37 | + auto j2000 = JulianDate::J2000(); |
| 38 | + std::cout << "J2000.0: " << j2000 << "\n"; |
| 39 | + std::cout << "Centuries since J2000: " << jd.julian_centuries() << "\n\n"; |
| 40 | + |
| 41 | + // --------------------------------------------------------------- |
| 42 | + // Period intersection (MJD — explicit MJD wrappers required) |
| 43 | + // --------------------------------------------------------------- |
| 44 | + Period night(MJD(60200.0), MJD(60200.5)); |
| 45 | + Period obs(MJD(60200.2), MJD(60200.8)); |
| 46 | + auto overlap = night.intersection(obs); |
| 47 | + std::cout << "Night: " << night << "\n"; |
| 48 | + std::cout << "Obs: " << obs << "\n"; |
| 49 | + std::cout << "Overlap: " << overlap << "\n"; |
| 50 | + std::cout << "Overlap duration: " << overlap.duration<qtty::Hour>() << "\n\n"; |
| 51 | + |
| 52 | + // --------------------------------------------------------------- |
| 53 | + // Period<UTC> — start/end expressed directly as civil UTC |
| 54 | + // --------------------------------------------------------------- |
| 55 | + Period utc_semester(UTC(2026, 1, 1), UTC(2026, 7, 1)); |
| 56 | + std::cout << "Semester (UTC): " << utc_semester << "\n"; |
| 57 | + std::cout << " duration: " << utc_semester.duration() << "\n\n"; |
| 58 | + |
| 59 | + // --------------------------------------------------------------- |
| 60 | + // Period<JulianDate> — start/end as Julian Dates |
| 61 | + // --------------------------------------------------------------- |
| 62 | + auto jd_start = JulianDate::from_utc(UTC(2026, 1, 1)); |
| 63 | + auto jd_end = JulianDate::from_utc(UTC(2026, 7, 1)); |
| 64 | + Period jd_semester(jd_start, jd_end); |
| 65 | + std::cout << "Semester (JD): " << jd_semester << "\n"; |
| 66 | + std::cout << " duration: " << jd_semester.duration() << "\n"; |
| 67 | + |
| 68 | + return 0; |
62 | 69 | } |
0 commit comments