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

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

fix galileo week

File size: 3.4 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 Galileo week.
69 * @return Galileo week number
70 */
71 inline unsigned int galw() const { return gpsw()-1024; };
72 /** Get Seconds in GPS week.
73 * @return time of GPS week in seconds
74 */
75 double gpssec() const;
76 /** Get BDS/Beidou week.
77 * @return BDS week number
78 */
79 unsigned int bdsw() const;
80 /** Get Seconds in BDS/Beidou week.
81 * @return time of BDS week in seconds
82 */
83 double bdssec() const;
84 double mjddec() const {return (_mjd + _sec / 86400.0);}
85 void civil_date (unsigned int& year, unsigned int& month,
86 unsigned int& day) const;
87 void civil_time (unsigned int& hour, unsigned int& min,
88 double& sec) const;
89 bool valid() const {return _mjd != 0 || _sec != 0.0;}
90 bool undef() const {return !valid();}
91 bool operator==(const bncTime &time1) const;
92 bool operator!=(const bncTime &time1) const;
93 bool operator<(const bncTime &time1) const;
94 bool operator>(const bncTime &time1) const;
95 bool operator<=(const bncTime &time1) const;
96 bool operator>=(const bncTime &time1) const;
97 double operator-(const bncTime &time1) const;
98 bncTime operator-(double sec) const;
99 bncTime operator+(double sec) const;
100 bncTime& operator+=(double sec);
101
102 std::string timestr(unsigned numdec = 3, char sep = ':') const;
103 std::string datestr(char sep = '-') const;
104 operator std::string() const;
105
106 private:
107 unsigned int _mjd;
108 double _sec;
109};
110
111#endif
112
Note: See TracBrowser for help on using the repository browser.