[2123] | 1 |
|
---|
| 2 | #ifndef BNCTIME_H
|
---|
| 3 | #define BNCTIME_H
|
---|
| 4 |
|
---|
| 5 | #include <string>
|
---|
| 6 |
|
---|
| 7 | class bncTime {
|
---|
| 8 | public:
|
---|
| 9 | bncTime() {this->reset();}
|
---|
| 10 | bncTime(int gpsw, double gpssec);
|
---|
[3986] | 11 | bncTime(const std::string& isoString);
|
---|
[2123] | 12 |
|
---|
[6812] | 13 | /**
|
---|
| 14 | * Set GPS time.
|
---|
| 15 | * @param gpsw GPS week
|
---|
| 16 | * @param gpssec GPS time of week in seconds
|
---|
| 17 | * @return reference to current instance
|
---|
| 18 | */
|
---|
[2123] | 19 | bncTime& set(int gpsw, double gpssec);
|
---|
[2251] | 20 | bncTime& set(int year, int month, int day, int hour, int min, double sec);
|
---|
| 21 | bncTime& set(int year, int month, int day, double daysec);
|
---|
[3507] | 22 | bncTime& setmjd(double daysec, int mjd);
|
---|
[4586] | 23 | bncTime& setmjd(double mjddec);
|
---|
[6812] | 24 | /**
|
---|
| 25 | * Set GPS time relative to current time.
|
---|
| 26 | * @param msec milliseconds of GPS week
|
---|
| 27 | * @return reference to current instance
|
---|
| 28 | */
|
---|
| 29 | bncTime &set(int msec);
|
---|
| 30 | /**
|
---|
| 31 | * Set GPS time relative to current time.
|
---|
| 32 | * @param msec milliseconds of current GPS day
|
---|
| 33 | * @return reference to current instance
|
---|
| 34 | */
|
---|
| 35 | bncTime &setTOD(int msec);
|
---|
| 36 | /**
|
---|
| 37 | * Set GLONASS time relative to current time.
|
---|
| 38 | * @param msec milliseconds of GLONASS day
|
---|
| 39 | * @return reference to current instance
|
---|
| 40 | */
|
---|
| 41 | bncTime &setTk(int msec);
|
---|
| 42 | /**
|
---|
| 43 | * Set BDS time relative to current time.
|
---|
| 44 | * @param msec milliseconds of BDS week
|
---|
| 45 | * @return reference to current instance
|
---|
| 46 | */
|
---|
| 47 | bncTime &setBDS(int msec);
|
---|
[2123] | 48 |
|
---|
[6812] | 49 | /**
|
---|
| 50 | * Set BDS time.
|
---|
| 51 | * @param year 4 digit year
|
---|
| 52 | * @param month month in year (1..12)
|
---|
| 53 | * @param day day of month (1..31)
|
---|
| 54 | * @param hour hour of day (0..23)
|
---|
[6980] | 55 | * @param min minute of hour (0..59)
|
---|
| 56 | * @param sec second of minute (0..59,60)
|
---|
[6812] | 57 | * @return reference to current instance
|
---|
| 58 | */
|
---|
| 59 | bncTime &setBDS (int year, int month, int day, int hour, int min, double sec);
|
---|
[7138] | 60 | bncTime &setBDS(int gpsw, double gpssec);
|
---|
[6812] | 61 |
|
---|
[7669] | 62 | void reset() {_mjd = 0; _sec = 0.0;}
|
---|
[2123] | 63 | unsigned int mjd() const;
|
---|
| 64 | double daysec() const;
|
---|
[6812] | 65 | /** Get GPS week.
|
---|
| 66 | * @return GPS week number
|
---|
| 67 | */
|
---|
[2123] | 68 | unsigned int gpsw() const;
|
---|
[6869] | 69 | /** Get Galileo week.
|
---|
| 70 | * @return Galileo week number
|
---|
| 71 | */
|
---|
| 72 | inline unsigned int galw() const { return gpsw()-1024; };
|
---|
[6812] | 73 | /** Get Seconds in GPS week.
|
---|
| 74 | * @return time of GPS week in seconds
|
---|
| 75 | */
|
---|
[2123] | 76 | double gpssec() const;
|
---|
[6812] | 77 | /** Get BDS/Beidou week.
|
---|
| 78 | * @return BDS week number
|
---|
| 79 | */
|
---|
| 80 | unsigned int bdsw() const;
|
---|
| 81 | /** Get Seconds in BDS/Beidou week.
|
---|
| 82 | * @return time of BDS week in seconds
|
---|
| 83 | */
|
---|
| 84 | double bdssec() const;
|
---|
[4584] | 85 | double mjddec() const {return (_mjd + _sec / 86400.0);}
|
---|
[2566] | 86 | void civil_date (unsigned int& year, unsigned int& month,
|
---|
| 87 | unsigned int& day) const;
|
---|
[2177] | 88 | void civil_time (unsigned int& hour, unsigned int& min,
|
---|
| 89 | double& sec) const;
|
---|
[2809] | 90 | bool valid() const {return _mjd != 0 || _sec != 0.0;}
|
---|
[5742] | 91 | bool undef() const {return !valid();}
|
---|
[2917] | 92 | bool operator==(const bncTime &time1) const;
|
---|
[2809] | 93 | bool operator!=(const bncTime &time1) const;
|
---|
[2923] | 94 | bool operator<(const bncTime &time1) const;
|
---|
| 95 | bool operator>(const bncTime &time1) const;
|
---|
| 96 | bool operator<=(const bncTime &time1) const;
|
---|
| 97 | bool operator>=(const bncTime &time1) const;
|
---|
[2809] | 98 | double operator-(const bncTime &time1) const;
|
---|
| 99 | bncTime operator-(double sec) const;
|
---|
| 100 | bncTime operator+(double sec) const;
|
---|
[5742] | 101 | bncTime& operator+=(double sec);
|
---|
[2123] | 102 |
|
---|
[7669] | 103 | std::string timestr(unsigned numdec = 3, char sep = ':') const;
|
---|
| 104 | std::string datestr(char sep = '-') const;
|
---|
[5742] | 105 | operator std::string() const;
|
---|
[2123] | 106 |
|
---|
| 107 | private:
|
---|
| 108 | unsigned int _mjd;
|
---|
| 109 | double _sec;
|
---|
| 110 | };
|
---|
| 111 |
|
---|
| 112 | #endif
|
---|
| 113 |
|
---|