27#include <fmt/ostream.h>
30#include <nlohmann/json.hpp>
31using json = nlohmann::json;
67constexpr long double EPSILON = std::max(1e-17L, 10 * std::numeric_limits<long double>::epsilon());
98 return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
165 str += fmt::format(
"{}{:d}d", str.empty() ?
"" :
" ", days);
171 str += fmt::format(
"{}{:d}h", str.empty() ?
"" :
" ", hours);
177 str += fmt::format(
"{}{:d}m", str.empty() ?
"" :
" ", minutes);
183 for (; d < digits + 1; d++)
185 if (2.0 * std::abs(std::round(seconds * std::pow(10.0, d)) - seconds * std::pow(10.0, d))
186 < std::pow(10.0, -(
static_cast<double>(digits) -
static_cast<double>(d))))
191 str += fmt::format(
"{}{:.{}f}s", str.empty() ?
"" :
" ", seconds, d);
213 if (this->mjd_frac >= 1.0L)
215 this->mjd_day +=
static_cast<int32_t
>(this->mjd_frac);
216 this->mjd_frac -=
static_cast<int32_t
>(this->mjd_frac);
218 while (this->mjd_frac < 0.0L)
220 this->mjd_frac += 1.0L;
236 gcem::abs(diffDays) == 1)
248 return !(*
this == rhs);
255 return *
this < rhs || *
this == rhs;
262 return *
this > rhs || *
this == rhs;
277 return !(*
this <= rhs);
281 explicit operator std::string()
const;
296 if (this->jd_frac >= 1.0L)
298 this->jd_day +=
static_cast<int32_t
>(this->jd_frac);
299 this->jd_frac -=
static_cast<int32_t
>(this->jd_frac);
301 while (this->jd_frac < 0.0L)
303 this->jd_frac += 1.0L;
319 gcem::abs(diffDays) == 1)
331 return !(*
this == rhs);
338 return *
this < rhs || *
this == rhs;
345 return *
this > rhs || *
this == rhs;
360 return !(*
this <= rhs);
364 explicit operator std::string()
const;
386 while (this->tow < 0.0L)
397 while (this->gpsWeek < 0)
414 gcem::abs(diffWeeks) == 1)
425 return !(*
this == rhs);
432 return *
this < rhs || *
this == rhs;
439 return *
this > rhs || *
this == rhs;
456 return !(*
this <= rhs);
460 explicit operator std::string()
const;
484 if (digits >= 0) { this->sec =
math::round(this->sec,
static_cast<size_t>(digits)); }
490 while (this->sec < 0.0L)
495 if (digits >= 0) { this->sec =
math::round(this->sec,
static_cast<size_t>(digits)); }
502 while (this->min < 0)
513 while (this->hour < 0)
530 while (this->day < 1)
541 while (this->month < 1)
570 return !(*
this == rhs);
577 return *
this < rhs || *
this == rhs;
584 return *
this > rhs || *
this == rhs;
604 return !(*
this <= rhs);
608 explicit operator std::string()
const;
630 while (this->sod < 0)
641 while (this->doy < 1)
658 gcem::abs(diffDays) == 1)
670 return !(*
this == rhs);
677 return *
this < rhs || *
this == rhs;
684 return *
this > rhs || *
this == rhs;
701 return !(*
this <= rhs);
705 explicit operator std::string()
const;
756 int32_t y = yearMonthDayHMS.
year + 4800 - a;
759 auto jd_day =
static_cast<int32_t
>(yearMonthDayHMS.
day
760 + gcem::floor((153.0 *
static_cast<double>(m) + 2.0) / 5.0)
762 + gcem::floor(
static_cast<double>(y) / 4.0)
763 - gcem::floor(
static_cast<double>(y) / 100.0)
764 + gcem::floor(
static_cast<double>(y) / 400.0)
766 auto jd_frac = (yearMonthDayHMS.
sec
781 auto year = yearDoySod.
year;
782 auto doy = yearDoySod.
doy;
783 auto sod = yearDoySod.
sod;
813 constexpr InsTime(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min,
long double sec,
TimeSystem timesys =
UTC)
835 return {
_mjd.mjd_day, mjdFrac };
848 return { jd_day, jd_frac };
864 return { 0, 0, tow };
883 double a = 32044.0 + jd.
jd_day;
884 double b = gcem::floor((4.0 * a + 3.0) / 146097.0);
885 double c = a - gcem::floor((b * 146097.0) / 4.0);
887 double d = gcem::floor((4.0 * c + 3.0) / 1461.0);
888 double e = c - gcem::floor((1461.0 * d) / 4.0);
889 double m = gcem::floor((5.0 * e + 2.0) / 153.0);
891 auto day =
static_cast<uint16_t
>(e - gcem::floor((153.0 * m + 2.0) / 5.0) + 1);
892 auto month =
static_cast<uint16_t
>(m + 3 - 12 * gcem::floor(m / 10.0));
893 auto year =
static_cast<uint16_t
>(b * 100 + d - 4800.0 + gcem::floor(m / 10.0));
897 return { year, month, day, 0, 0, sec, digits };
907 auto year = yearMonthDayHMS.
year;
910 + yearMonthDayHMS.
sec
914 for (int32_t i = 1; i < yearMonthDayHMS.
month; i++)
918 doy += yearMonthDayHMS.
day;
920 return { year, doy, sod };
1040 return std::chrono::duration<long double>(diffSec);
1048 auto duration_mjd_frac = std::chrono::duration<long double, std::ratio<InsTimeUtil::SECONDS_PER_DAY>>(duration).count();
1050 this->_mjd.mjd_frac + duration_mjd_frac);
1059 auto duration_mjd_frac = std::chrono::duration<long double, std::ratio<InsTimeUtil::SECONDS_PER_DAY>>(duration).count();
1061 this->_mjd.mjd_frac - duration_mjd_frac);
1071 return InsTime(time) += duration;
1080 return InsTime(time) -= duration;
1086 explicit operator std::string()
const;
1089 [[nodiscard]]
constexpr bool empty()
const
1091 return _mjd.mjd_day == 0 &&
_mjd.mjd_frac == 0.0L;
1098 _mjd.mjd_frac = 0.0L;
1113 *
this += std::chrono::duration<long double>(diff);
1192struct hash<NAV::InsTime>
1198 auto hash1 = std::hash<int32_t>{}(t.
toMJD().mjd_day);
1199 auto hash2 = std::hash<long double>{}(t.
toMJD().mjd_frac);
1201 return hash1 | (hash2 << 32);
1206#ifndef DOXYGEN_IGNORE
1210struct fmt::formatter<NAV::InsTime_MJD> : fmt::formatter<std::string>
1216 template<
typename FormatContext>
1217 auto format(
const NAV::InsTime_MJD& mjd, FormatContext& ctx)
const
1219 return fmt::format_to(ctx.out(),
"day={}, frac={}", mjd.
mjd_day,
static_cast<double>(mjd.
mjd_frac));
1224struct fmt::formatter<NAV::InsTime_JD> : fmt::formatter<std::string>
1230 template<
typename FormatContext>
1231 auto format(
const NAV::InsTime_JD& jd, FormatContext& ctx)
const
1233 return fmt::format_to(ctx.out(),
"day={}, frac={}", jd.
jd_day,
static_cast<double>(jd.
jd_frac));
1238struct fmt::formatter<NAV::InsTime_GPSweekTow> : fmt::formatter<std::string>
1244 template<
typename FormatContext>
1245 auto format(
const NAV::InsTime_GPSweekTow& gpsWeekTow, FormatContext& ctx)
const
1247 return fmt::format_to(ctx.out(),
"cycle={}, week={}, tow={}",
1253struct fmt::formatter<NAV::InsTime_YMDHMS> : fmt::formatter<std::string>
1259 template<
typename FormatContext>
1260 auto format(
const NAV::InsTime_YMDHMS& ymdhms, FormatContext& ctx)
const
1262 return fmt::format_to(ctx.out(),
"{}-{}-{} {}:{}:{:.6g}",
1264 ymdhms.
hour, ymdhms.
min,
static_cast<double>(ymdhms.
sec));
1269struct fmt::formatter<NAV::InsTime_YDoySod> : fmt::formatter<std::string>
1275 template<
typename FormatContext>
1276 auto format(
const NAV::InsTime_YDoySod& yDoySod, FormatContext& ctx)
const
1278 return fmt::format_to(ctx.out(),
"year={}, doy={}, sod={:.6g}",
1279 yDoySod.
year, yDoySod.
doy,
static_cast<double>(yDoySod.
sod));
1284struct fmt::formatter<NAV::InsTime> : fmt::formatter<std::string>
1290 template<
typename FormatContext>
1291 auto format(
const NAV::InsTime& insTime, FormatContext& ctx)
const
nlohmann::json json
json namespace
Definition FlowManager.hpp:21
constexpr T round(const T &value, size_t digits)
Round the number to the specified amount of digits.
Definition Math.hpp:41
void to_json(json &j, const Node &node)
Converts the provided node into a json object.
void from_json(const json &j, Node &node)
Converts the provided json object into a node object.
std::ostream & operator<<(std::ostream &os, const SatelliteSystem &satSys)
Stream insertion operator overload.
TimeSystem_
List of all time systems.
Definition TimeSystem.hpp:27
@ IRNSST
Indian Regional Navigation Satellite System Time.
Definition TimeSystem.hpp:35
@ GST
Galileo System Time.
Definition TimeSystem.hpp:32
@ BDT
BeiDou Time.
Definition TimeSystem.hpp:33
@ GLNT
GLONASS Time (GLONASST)
Definition TimeSystem.hpp:31
@ TimeSys_None
No Time system.
Definition TimeSystem.hpp:28
@ QZSST
Quasi-Zenith Satellite System Time.
Definition TimeSystem.hpp:34
@ GPST
GPS Time.
Definition TimeSystem.hpp:30
@ UTC
Coordinated Universal Time.
Definition TimeSystem.hpp:29
The class is responsible for all time-related tasks.
Definition InsTime.hpp:710
constexpr InsTime(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, long double sec, TimeSystem timesys=UTC)
Constructor.
Definition InsTime.hpp:813
constexpr InsTime(const InsTime &)=default
Copy constructor.
constexpr InsTime()=default
Default Constructor.
constexpr InsTime_JD toJD(TimeSystem timesys=UTC) const
Converts this time object into a different format.
Definition InsTime.hpp:841
constexpr bool operator>=(const InsTime &rhs) const
Greater or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:1019
constexpr InsTime & operator+=(const std::chrono::duration< long double > &duration)
Adds a duration to this time point.
Definition InsTime.hpp:1046
constexpr InsTime & operator=(InsTime &&)=default
Move assignment operator.
constexpr InsTime_YDoySod toYDoySod(TimeSystem timesys=UTC) const
Converts this time object into a different format.
Definition InsTime.hpp:903
InsTime_MJD _mjd
Modified Julien Date of this InsTime object.
Definition InsTime.hpp:1143
constexpr InsTime & operator=(const InsTime &)=default
Copy assignment operator.
constexpr InsTime(int32_t gpsCycle, int32_t gpsWeek, long double tow, TimeSystem timesys=GPST)
Constructor.
Definition InsTime.hpp:802
constexpr int differenceToUTC(TimeSystem timesys) const
Returns the time difference in [s] of a time system and UTC.
Definition InsTime.hpp:1118
constexpr InsTime_GPSweekTow toGPSweekTow(TimeSystem timesys=GPST) const
Converts this time object into a different format.
Definition InsTime.hpp:854
constexpr friend std::chrono::duration< long double > operator-(const InsTime &lhs, const InsTime &rhs)
Substracts 2 points in time.
Definition InsTime.hpp:1035
constexpr InsTime(const InsTime_GPSweekTow &gpsWeekTow, TimeSystem timesys=GPST)
Constructor.
Definition InsTime.hpp:738
constexpr InsTime & operator-=(const std::chrono::duration< long double > &duration)
Substracts a duration to this time point.
Definition InsTime.hpp:1057
constexpr InsTime(const InsTime_YDoySod &yearDoySod, TimeSystem timesys=UTC)
Constructor.
Definition InsTime.hpp:779
constexpr friend InsTime operator-(const InsTime &time, const std::chrono::duration< long double > &duration)
Substracts a duration from a time point.
Definition InsTime.hpp:1078
constexpr bool operator<(const InsTime &rhs) const
Smaller comparison operator (takes double precision into account)
Definition InsTime.hpp:1023
static constexpr uint16_t leapGps2UTC(const InsTime_JD &jd)
Returns the number of leap seconds (offset GPST to UTC) for the provided InsTime_JD object.
Definition InsTime.hpp:982
constexpr InsTime_YMDHMS toYMDHMS(TimeSystem timesys=UTC, int digits=-1) const
Converts this time object into a different format.
Definition InsTime.hpp:871
constexpr bool operator>(const InsTime &rhs) const
Greater comparison operator (takes double precision into account)
Definition InsTime.hpp:1027
static constexpr uint16_t leapGps2UTC(const InsTime_GPSweekTow &gpsWeekTow)
Returns the number of leap seconds (offset GPST to UTC) for the provided InsTime_GPSweekTow object.
Definition InsTime.hpp:958
~InsTime()=default
Destructor.
constexpr uint16_t leapGps2UTC() const
Returns the current number of leap seconds (offset GPST to UTC)
Definition InsTime.hpp:942
constexpr InsTime_MJD toMJD(TimeSystem timesys=UTC) const
Converts this time object into a different format.
Definition InsTime.hpp:832
constexpr InsTime(const InsTime_MJD &mjd, TimeSystem timesys=UTC)
Constructor.
Definition InsTime.hpp:720
constexpr bool empty() const
Checks if the Time object has a value.
Definition InsTime.hpp:1089
static constexpr uint16_t leapGps2UTC(const InsTime &insTime)
Returns the number of leap seconds (offset GPST to UTC) for the provided InsTime object.
Definition InsTime.hpp:950
static constexpr uint16_t leapGps2UTC(const InsTime_YDoySod &yearDoySod)
Returns the number of leap seconds (offset GPST to UTC) for the provided InsTime_YDoySod object.
Definition InsTime.hpp:966
constexpr InsTime(const InsTime_YMDHMS &yearMonthDayHMS, TimeSystem timesys=UTC)
Constructor.
Definition InsTime.hpp:753
constexpr bool operator!=(const InsTime &rhs) const
Inequal comparison operator (takes double precision into account)
Definition InsTime.hpp:1011
constexpr friend InsTime operator+(const InsTime &time, const std::chrono::duration< long double > &duration)
Adds a duration to a time point.
Definition InsTime.hpp:1069
void MakeTimeFromGloOrbit(double UTC_sec)
Adds the difference [seconds] between toe (OBRIT-0 last element) and toc (ORBIT-0 first element) to t...
Definition InsTime.hpp:1104
constexpr InsTime toFullDay() const
Returns the current time rounded/cutted to a full day (changes time to 0:0:0h UTC of current day)
Definition InsTime.hpp:925
constexpr long double toUnixTime() const
Converts this time object into a UNIX timestamp in [s].
Definition InsTime.hpp:932
constexpr bool operator<=(const InsTime &rhs) const
Smaller or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:1015
constexpr bool operator==(const InsTime &rhs) const
Equal comparison operator (takes double precision into account)
Definition InsTime.hpp:1007
void reset()
Resets the InsTime object.
Definition InsTime.hpp:1095
constexpr bool isLeapYear() const
Checks if the current time is a leap year.
Definition InsTime.hpp:997
static constexpr uint16_t leapGps2UTC(const InsTime_MJD &mjd_in)
Returns the number of leap seconds (offset GPST to UTC) for the provided InsTime_MJD object.
Definition InsTime.hpp:990
constexpr InsTime(const InsTime_JD &jd, TimeSystem timesys=UTC)
Constructor.
Definition InsTime.hpp:729
constexpr InsTime(InsTime &&)=default
Move constructor.
static constexpr uint16_t leapGps2UTC(const InsTime_YMDHMS &yearMonthDayHMS)
Returns the number of leap seconds (offset GPST to UTC) for the provided InsTime_YMDHMS object.
Definition InsTime.hpp:974
Time System defintions.
Definition TimeSystem.hpp:40
Utility Namespace for Time related tasks.
Definition InsTime.hpp:40
constexpr long double EPSILON
Definition InsTime.hpp:67
constexpr int32_t MINUTES_PER_HOUR
Minutes / Hour.
Definition InsTime.hpp:55
constexpr long double DIFF_MJD_TO_JD_FRAC
Difference of the fraction between MJD and JD.
Definition InsTime.hpp:48
constexpr int32_t MINUTES_PER_DAY
Minutes / Day.
Definition InsTime.hpp:56
constexpr int32_t SECONDS_PER_DAY
Seconds / Day.
Definition InsTime.hpp:60
constexpr int32_t daysInMonth(int32_t month, int32_t year)
Returns the number of days in the specified month of the year.
Definition InsTime.hpp:105
constexpr int32_t END_OF_THE_CENTURY_MJD
Modified Julian Date of the end of the century (15.01.2954)
Definition InsTime.hpp:41
constexpr int32_t SECONDS_PER_WEEK
Seconds / Week.
Definition InsTime.hpp:61
constexpr int32_t DIFF_TO_6_1_1980_MJD
06.01.1980 in Modified Julian Date
Definition InsTime.hpp:43
constexpr int32_t DAYS_PER_WEEK
Days / Week.
Definition InsTime.hpp:52
constexpr bool isLeapYear(int32_t year)
Returns true if the provided year is a leap year, false otherwise.
Definition InsTime.hpp:96
constexpr int32_t MONTHS_PER_YEAR
Months / Year.
Definition InsTime.hpp:50
constexpr int32_t DAYS_PER_YEAR
Days / Year.
Definition InsTime.hpp:51
constexpr int32_t DIFF_MJD_TO_JD_DAYS
Difference of the days between MJD and JD.
Definition InsTime.hpp:47
constexpr int32_t HOURS_PER_DAY
Hours / Day.
Definition InsTime.hpp:53
constexpr int32_t HOURS_PER_WEEK
Hours / Week.
Definition InsTime.hpp:54
constexpr int32_t MINUTES_PER_WEEK
Minutes / Week.
Definition InsTime.hpp:57
constexpr std::array< int32_t, 20 > GPS_LEAP_SEC_MJD
Maps GPS leap seconds to a time: array<mjd_day>, index + 1 is amount of leap seconds.
Definition InsTime.hpp:70
constexpr int32_t WEEKS_PER_GPS_CYCLE
Weeks per GPS cycle.
Definition InsTime.hpp:42
constexpr int32_t DIFF_BDT_WEEK_TO_GPST_WEEK
BeiDou starts zero at 1-Jan-2006 and GPS starts 6-Jan-1980.
Definition InsTime.hpp:45
constexpr int32_t SECONDS_PER_HOUR
Seconds / Hour.
Definition InsTime.hpp:59
constexpr std::string formatDuration(double seconds, size_t digits=9)
Formats a duration given in seconds into days, hours, minutes and seconds.
Definition InsTime.hpp:159
constexpr int32_t SECONDS_PER_MINUTE
Seconds / Minute.
Definition InsTime.hpp:58
constexpr int32_t DIFF_TO_1_1_1970_MJD
01.01.1970 00:00:00 UTC in Modified Julian Date (UNIX epoch)
Definition InsTime.hpp:44
GPS week and time of week in GPS standard time [GPST].
Definition InsTime.hpp:369
constexpr bool operator>=(const InsTime_GPSweekTow &rhs) const
Greater or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:437
constexpr bool operator!=(const InsTime_GPSweekTow &rhs) const
Inequal comparison operator (takes double precision into account)
Definition InsTime.hpp:423
int32_t gpsCycle
Contains GPS cycle in GPS standard time [GPST].
Definition InsTime.hpp:370
constexpr bool operator<=(const InsTime_GPSweekTow &rhs) const
Smaller or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:430
int32_t gpsWeek
Contains GPS week in GPS standard time [GPST].
Definition InsTime.hpp:371
constexpr InsTime_GPSweekTow(int32_t gpsCycle, int32_t gpsWeek, long double tow)
Constructor.
Definition InsTime.hpp:378
constexpr bool operator<(const InsTime_GPSweekTow &rhs) const
Smaller comparison operator (takes double precision into account)
Definition InsTime.hpp:444
constexpr bool operator>(const InsTime_GPSweekTow &rhs) const
Greater comparison operator (takes double precision into account)
Definition InsTime.hpp:454
constexpr bool operator==(const InsTime_GPSweekTow &rhs) const
Equal comparison operator (takes double precision into account)
Definition InsTime.hpp:407
long double tow
Contains GPS time of week in seconds in GPS standard time [GPST].
Definition InsTime.hpp:372
Julien Date [UTC].
Definition InsTime.hpp:286
int32_t jd_day
Full days since 1. January −4712 [UTC].
Definition InsTime.hpp:287
constexpr bool operator<(const InsTime_JD &rhs) const
Smaller comparison operator (takes double precision into account)
Definition InsTime.hpp:350
constexpr InsTime_JD(int32_t jd_day, long double jd_frac)
Constructor.
Definition InsTime.hpp:293
constexpr bool operator>=(const InsTime_JD &rhs) const
Greater or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:343
constexpr bool operator>(const InsTime_JD &rhs) const
Greater comparison operator (takes double precision into account)
Definition InsTime.hpp:358
long double jd_frac
Decimal fractions of a day of the Julien Date [UTC].
Definition InsTime.hpp:288
constexpr bool operator<=(const InsTime_JD &rhs) const
Smaller or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:336
constexpr bool operator!=(const InsTime_JD &rhs) const
Inequal comparison operator (takes double precision into account)
Definition InsTime.hpp:329
constexpr bool operator==(const InsTime_JD &rhs) const
Equal comparison operator (takes double precision into account)
Definition InsTime.hpp:311
Modified Julien Date [UTC].
Definition InsTime.hpp:200
constexpr bool operator>=(const InsTime_MJD &rhs) const
Greater or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:260
constexpr bool operator!=(const InsTime_MJD &rhs) const
Inequal comparison operator (takes double precision into account)
Definition InsTime.hpp:246
long double mjd_frac
Decimal fractions of a day of the Modified Julien Date [UTC].
Definition InsTime.hpp:202
constexpr bool operator>(const InsTime_MJD &rhs) const
Greater comparison operator (takes double precision into account)
Definition InsTime.hpp:275
constexpr InsTime_MJD(int32_t mjd_day, long double mjd_frac)
Constructor.
Definition InsTime.hpp:210
constexpr bool operator==(const InsTime_MJD &rhs) const
Equal comparison operator (takes double precision into account)
Definition InsTime.hpp:228
constexpr bool operator<=(const InsTime_MJD &rhs) const
Smaller or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:253
constexpr bool operator<(const InsTime_MJD &rhs) const
Smaller comparison operator (takes double precision into account)
Definition InsTime.hpp:267
constexpr InsTime_MJD()=default
Default constructor.
int32_t mjd_day
Full days since 17. November 1858 [UTC].
Definition InsTime.hpp:201
GPS year and day of year in GPS standard time [GPST].
Definition InsTime.hpp:613
long double sod
Contains second of day in GPS standard time [GPST].
Definition InsTime.hpp:616
constexpr bool operator<(const InsTime_YDoySod &rhs) const
Smaller comparison operator (takes double precision into account)
Definition InsTime.hpp:689
int32_t year
Contains year in GPS standard time [GPST].
Definition InsTime.hpp:614
constexpr bool operator!=(const InsTime_YDoySod &rhs) const
Inequal comparison operator (takes double precision into account)
Definition InsTime.hpp:668
constexpr bool operator>(const InsTime_YDoySod &rhs) const
Greater comparison operator (takes double precision into account)
Definition InsTime.hpp:699
constexpr bool operator==(const InsTime_YDoySod &rhs) const
Equal comparison operator (takes double precision into account)
Definition InsTime.hpp:651
int32_t doy
Contains day of year in GPS standard time [GPST].
Definition InsTime.hpp:615
constexpr bool operator<=(const InsTime_YDoySod &rhs) const
Smaller or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:675
constexpr bool operator>=(const InsTime_YDoySod &rhs) const
Greater or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:682
constexpr InsTime_YDoySod(int32_t year, int32_t doy, long double sod)
Constructor.
Definition InsTime.hpp:622
Universal Time Coordinated [UTC].
Definition InsTime.hpp:465
int32_t min
Contains minute in Universal Time Coordinated [UTC].
Definition InsTime.hpp:470
constexpr bool operator>=(const InsTime_YMDHMS &rhs) const
Greater or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:582
int32_t year
Contains year in Universal Time Coordinated [UTC].
Definition InsTime.hpp:466
constexpr bool operator<(const InsTime_YMDHMS &rhs) const
Smaller comparison operator (takes double precision into account)
Definition InsTime.hpp:589
constexpr InsTime_YMDHMS(int32_t year, int32_t month, int32_t day, int32_t hour, int32_t min, long double sec, int digits=-1)
Constructor.
Definition InsTime.hpp:481
constexpr bool operator==(const InsTime_YMDHMS &rhs) const
Equal comparison operator (takes double precision into account)
Definition InsTime.hpp:551
constexpr bool operator!=(const InsTime_YMDHMS &rhs) const
Inequal comparison operator (takes double precision into account)
Definition InsTime.hpp:568
long double sec
Contains second in Universal Time Coordinated [UTC].
Definition InsTime.hpp:471
int32_t month
Contains month in Universal Time Coordinated [UTC].
Definition InsTime.hpp:467
constexpr bool operator>(const InsTime_YMDHMS &rhs) const
Greater comparison operator (takes double precision into account)
Definition InsTime.hpp:602
int32_t hour
Contains hour in Universal Time Coordinated [UTC].
Definition InsTime.hpp:469
int32_t day
Contains day in Universal Time Coordinated [UTC].
Definition InsTime.hpp:468
constexpr bool operator<=(const InsTime_YMDHMS &rhs) const
Smaller or equal comparison operator (takes double precision into account)
Definition InsTime.hpp:575
std::size_t operator()(const NAV::InsTime &t) const
Hash function for InsTime.
Definition InsTime.hpp:1196