57 UTC(int32_t y, uint8_t mo, uint8_t d,
58 uint8_t h = 0, uint8_t mi = 0, uint8_t s = 0, uint32_t ns = 0)
62 tempoch_utc_t
to_c()
const {
68 return UTC(c.year, c.month, c.day, c.hour, c.minute, c.second, c.nanosecond);
102 check_status(tempoch_jd_from_utc(c, &jd),
"JulianDate::from_utc");
107 constexpr double value()
const {
return m_value; }
110 double to_mjd()
const {
return tempoch_jd_to_mjd(m_value); }
115 check_status(tempoch_jd_to_utc(m_value, &out),
"JulianDate::to_utc");
121 return tempoch_jd_difference(m_value, other.m_value);
126 return JulianDate(tempoch_jd_add_days(m_value, days));
131 return tempoch_jd_julian_centuries(m_value);
162 constexpr MJD() : m_value(0.0) {}
163 constexpr explicit MJD(
double v) : m_value(v) {}
169 check_status(tempoch_mjd_from_utc(c, &mjd),
"MJD::from_utc");
175 return MJD(tempoch_jd_to_mjd(jd.
value()));
179 constexpr double value()
const {
return m_value; }
187 check_status(tempoch_mjd_to_utc(m_value, &out),
"MJD::to_utc");
193 return tempoch_mjd_difference(m_value, other.m_value);
198 return MJD(tempoch_mjd_add_days(m_value, days));
Julian Date wrapper (value type).
static JulianDate from_utc(const UTC &utc)
Create from a UTC date-time.
bool operator!=(const JulianDate &o) const
static JulianDate J2000()
J2000.0 epoch (2451545.0).
double to_mjd() const
Convert to MJD.
bool operator>(const JulianDate &o) const
UTC to_utc() const
Convert to UTC.
double julian_centuries() const
Julian centuries since J2000.
bool operator>=(const JulianDate &o) const
constexpr JulianDate(double v)
double operator-(const JulianDate &other) const
Difference in days (this – other).
constexpr double value() const
Raw value.
JulianDate operator+(double days) const
Add days.
bool operator<=(const JulianDate &o) const
bool operator==(const JulianDate &o) const
bool operator<(const JulianDate &o) const
Modified Julian Date wrapper (value type).
MJD operator+(double days) const
Add days.
constexpr double value() const
Raw value.
double operator-(const MJD &other) const
Difference in days (this – other).
bool operator<(const MJD &o) const
static MJD from_jd(const JulianDate &jd)
Create from a Julian Date.
JulianDate to_jd() const
Convert to JD.
bool operator>(const MJD &o) const
bool operator==(const MJD &o) const
bool operator<=(const MJD &o) const
bool operator>=(const MJD &o) const
UTC to_utc() const
Convert to UTC.
static MJD from_utc(const UTC &utc)
Create from a UTC date-time.
bool operator!=(const MJD &o) const
Error handling for the tempoch C++ wrapper.
void check_status(tempoch_status_t status, const char *operation)
Check a tempoch_status_t and throw the appropriate exception on error.
static UTC from_c(const tempoch_utc_t &c)
Create from the C FFI struct.
uint8_t hour
Hour in range [0, 23].
uint8_t second
Second in range [0, 60], leap second aware.
uint8_t day
Day of month in range [1, 31].
uint32_t nanosecond
Nanosecond component in range [0, 999,999,999].
tempoch_utc_t to_c() const
Convert to the C FFI struct.
int32_t year
Gregorian year (astronomical year numbering).
uint8_t month
Month in range [1, 12].
UTC()
Default constructor: J2000 epoch noon-like civil representation.
UTC(int32_t y, uint8_t mo, uint8_t d, uint8_t h=0, uint8_t mi=0, uint8_t s=0, uint32_t ns=0)
Construct from civil UTC components.
uint8_t minute
Minute in range [0, 59].