source: ntrip/trunk/BNC/src/bnctime.h@ 6812

Last change on this file since 6812 was 6812, checked in by stoecker, 9 years ago

integrate RTCM3 parsing into BNC and directly fill target structures, add doxygen documentation

File size: 3.2 KB
Line 
1
2#ifndef BNCTIME_H
3#define BNCTIME_H
4
5#include <string>
6
7class bncTime {
8 public:
9 bncTime() {this->reset();}
10 bncTime(int gpsw, double gpssec);
11 bncTime(const std::string& isoString);
12
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 */
19 bncTime& set(int gpsw, double gpssec);
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);
22 bncTime& setmjd(double daysec, int mjd);
23 bncTime& setmjd(double mjddec);
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);
48
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)
55 * @param min minute of hopur (0..59)
56 * @param sec second of minutte (0..59,60)
57 * @return reference to current instance
58 */
59 bncTime &setBDS (int year, int month, int day, int hour, int min, double sec);
60
61 void reset() {_mjd = 0; _sec = 0;}
62 unsigned int mjd() const;
63 double daysec() const;
64 /** Get GPS week.
65 * @return GPS week number
66 */
67 unsigned int gpsw() const;
68 /** Get Seconds in GPS week.
69 * @return time of GPS week in seconds
70 */
71 double gpssec() const;
72 /** Get BDS/Beidou week.
73 * @return BDS week number
74 */
75 unsigned int bdsw() const;
76 /** Get Seconds in BDS/Beidou week.
77 * @return time of BDS week in seconds
78 */
79 double bdssec() const;
80 double mjddec() const {return (_mjd + _sec / 86400.0);}
81 void civil_date (unsigned int& year, unsigned int& month,
82 unsigned int& day) const;
83 void civil_time (unsigned int& hour, unsigned int& min,
84 double& sec) const;
85 bool valid() const {return _mjd != 0 || _sec != 0.0;}
86 bool undef() const {return !valid();}
87 bool operator==(const bncTime &time1) const;
88 bool operator!=(const bncTime &time1) const;
89 bool operator<(const bncTime &time1) const;
90 bool operator>(const bncTime &time1) const;
91 bool operator<=(const bncTime &time1) const;
92 bool operator>=(const bncTime &time1) const;
93 double operator-(const bncTime &time1) const;
94 bncTime operator-(double sec) const;
95 bncTime operator+(double sec) const;
96 bncTime& operator+=(double sec);
97
98 std::string timestr(unsigned numdec = 3, char sep = ':') const;
99 std::string datestr(char sep = '-') const;
100 operator std::string() const;
101
102 private:
103 unsigned int _mjd;
104 double _sec;
105};
106
107#endif
108
Note: See TracBrowser for help on using the repository browser.