tempoch-cpp
Header-only C++ wrapper for tempoch
Loading...
Searching...
No Matches
time_example.cpp

Demonstrates the tempoch C++ API.

Demonstrates the tempoch C++ API.Build and run: cmake -B build && cmake –build build ./build/time_example

#include <iostream>
#include <iomanip>
int main() {
using namespace tempoch;
// ---------------------------------------------------------------
// UTC → JulianDate → MJD round-trip
// ---------------------------------------------------------------
UTC utc(2026, 7, 15, 22, 0, 0);
std::cout << "UTC: " << utc.year << "-"
<< std::setfill('0') << std::setw(2) << (int)utc.month << "-"
<< std::setw(2) << (int)utc.day << " "
<< std::setw(2) << (int)utc.hour << ":"
<< std::setw(2) << (int)utc.minute << ":"
<< std::setw(2) << (int)utc.second << "\n";
auto jd = JulianDate::from_utc(utc);
std::cout << "JD: " << std::fixed << std::setprecision(6) << jd.value() << "\n";
auto mjd = MJD::from_jd(jd);
std::cout << "MJD: " << std::fixed << std::setprecision(6) << mjd.value() << "\n";
auto utc2 = mjd.to_utc();
std::cout << "Back: " << utc2.year << "-"
<< std::setfill('0') << std::setw(2) << (int)utc2.month << "-"
<< std::setw(2) << (int)utc2.day << " "
<< std::setw(2) << (int)utc2.hour << ":"
<< std::setw(2) << (int)utc2.minute << ":"
<< std::setw(2) << (int)utc2.second << "\n\n";
// ---------------------------------------------------------------
// J2000 epoch and Julian centuries
// ---------------------------------------------------------------
auto j2000 = JulianDate::J2000();
std::cout << "J2000.0: " << j2000.value() << "\n";
std::cout << "Centuries since J2000: " << jd.julian_centuries() << "\n\n";
// ---------------------------------------------------------------
// Period intersection
// ---------------------------------------------------------------
Period night(60200.0, 60200.5);
Period obs(60200.2, 60200.8);
auto overlap = night.intersection(obs);
std::cout << "Night: [" << night.start_mjd() << ", " << night.end_mjd() << "]\n";
std::cout << "Obs: [" << obs.start_mjd() << ", " << obs.end_mjd() << "]\n";
std::cout << "Overlap: [" << overlap.start_mjd() << ", " << overlap.end_mjd() << "]\n";
std::cout << "Overlap duration: " << overlap.duration_days() * 24.0 << " hours\n";
return 0;
}
A time period [start, end] in MJD.
Definition period.hpp:33
double start_mjd() const
Inclusive period start as raw MJD days.
Definition period.hpp:66
Period intersection(const Period &other) const
Compute the overlapping interval with another period.
Definition period.hpp:88
double end_mjd() const
Inclusive period end as raw MJD days.
Definition period.hpp:69
UTC date-time breakdown.
Definition time.hpp:28
uint8_t hour
Hour in range [0, 23].
Definition time.hpp:36
uint8_t second
Second in range [0, 60], leap second aware.
Definition time.hpp:40
uint8_t day
Day of month in range [1, 31].
Definition time.hpp:34
int32_t year
Gregorian year (astronomical year numbering).
Definition time.hpp:30
uint8_t month
Month in range [1, 12].
Definition time.hpp:32
uint8_t minute
Minute in range [0, 59].
Definition time.hpp:38
Umbrella header for the tempoch C++ wrapper library.
int main()