Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bnc.pro
r2057 r2122 36 36 bncnetqueryrtp.h bncsettings.h latencychecker.h \ 37 37 bncipport.h bncnetqueryv0.h bncnetqueryudp.h \ 38 bncnetqueryudp0.h bncudpport.h t_time.h\38 bncnetqueryudp0.h bncudpport.h bnctime.h \ 39 39 bncserialport.h bncnetquerys.h bncfigure.h \ 40 40 bncfigurelate.h bncpppclient.h bncversion.h \ … … 66 66 bncnetqueryudp0.cpp bncudpport.cpp \ 67 67 bncserialport.cpp bncnetquerys.cpp bncfigure.cpp \ 68 bncfigurelate.cpp bncpppclient.cpp t_time.cpp\68 bncfigurelate.cpp bncpppclient.cpp bnctime.cpp \ 69 69 bancroft.cpp bncmodel.cpp \ 70 70 RTCM/RTCM2.cpp RTCM/RTCM2Decoder.cpp \ -
trunk/BNC/t_time.cpp
r2027 r2122 9 9 using namespace std; 10 10 11 double t_time::djul(long jj, long mm, double tt) { 12 long ii, kk; 13 double djul ; 14 if( mm <= 2 ) { 15 jj = jj - 1; 16 mm = mm + 12; 17 } 18 ii = jj/100; 19 kk = 2 - ii + ii/4; 20 djul = (365.25*jj - fmod( 365.25*jj, 1.0 )) - 679006.0; 21 djul = djul + floor( 30.6001*(mm + 1) ) + tt + kk; 22 return djul; 23 } 24 25 double t_time::gpjd(double second, int nweek) { 26 double deltat; 27 deltat = nweek*7.0 + second/86400.0 ; 28 return( 44244.0 + deltat) ; 29 } 30 31 void t_time::jdgp(double tjul, double & second, long & nweek) { 32 double deltat; 33 deltat = tjul - 44244.0 ; 34 nweek = (long) floor(deltat/7.0); 35 second = (deltat - (nweek)*7.0)*86400.0; 36 } 37 38 void t_time::jmt(double djul, long& jj, long& mm, double& dd) { 39 long ih, ih1, ih2 ; 40 double t1, t2, t3, t4; 41 t1 = 1.0 + djul - fmod( djul, 1.0 ) + 2400000.0; 42 t4 = fmod( djul, 1.0 ); 43 ih = long( (t1 - 1867216.25)/36524.25 ); 44 t2 = t1 + 1 + ih - ih/4; 45 t3 = t2 - 1720995.0; 46 ih1 = long( (t3 - 122.1)/365.25 ); 47 t1 = 365.25*ih1 - fmod( 365.25*ih1, 1.0 ); 48 ih2 = long( (t3 - t1)/30.6001 ); 49 dd = t3 - t1 - (int)( 30.6001*ih2 ) + t4; 50 mm = ih2 - 1; 51 if ( ih2 > 13 ) mm = ih2 - 13; 52 jj = ih1; 53 if ( mm <= 2 ) jj = jj + 1; 54 } 55 56 t_time::t_time(int gpsw, int dow, double daysec) { 57 this->set(gpsw, dow, daysec); 58 } 59 11 // Constructor 12 ////////////////////////////////////////////////////////////////////////////// 60 13 t_time::t_time(int gpsw, double gpssec) { 61 14 this->set(gpsw, gpssec); 62 15 } 63 16 64 t_time::t_time(int hour, int min, double sec, 65 int day, int month, int year) { 66 double daysec = hour*3600.0 + min*60.0 + sec; 67 this->set(daysec, day, month, year); 68 } 69 70 t_time::t_time(double daysec, int day, int month, int year) { 71 this->set(daysec, day, month, year); 72 } 73 74 t_time::t_time(double daysec, int doy, unsigned int year) { 75 this->set(daysec, doy, year); 76 } 77 78 t_time& t_time::set(int gpsw, int dow, double daysec) { 79 int deltad; 80 while (daysec >= 86400) { 81 daysec-=86400; 82 dow++; 83 } 84 while (daysec < 0) { 85 daysec+=86400; 86 dow--; 87 } 88 deltad = gpsw*7 + dow; 89 _mjd = 44244 + deltad; 90 _sec = daysec; 91 return *this; 92 } 93 17 // 18 ////////////////////////////////////////////////////////////////////////////// 94 19 t_time& t_time::set(int gpsw, double gpssec) { 95 20 int deltad; … … 109 34 } 110 35 111 t_time& t_time::set(int hour, int min, double sec, int day, int month, int year) { 112 return this->set(hour*3600 + min*60 + sec, day, month, year); 113 } 114 115 t_time& t_time::set(double daysec, int day, int month, int year) { 116 _sec = daysec; 117 _mjd = (unsigned int)djul(year, month, day); 118 while ( _sec >= 86400 ) { 119 _sec-=86400; 120 _mjd++; 121 } 122 while ( _sec < 0 ) { 123 _sec+=86400; 124 _mjd--; 125 } 126 return *this; 127 } 128 129 t_time& t_time::set(double daysec, int doy, int year) { 130 _mjd = (unsigned int)djul(year, 1, 1) + (doy - 1); 131 _sec = daysec; 132 while ( _sec >= 86400 ) { 133 _sec-=86400; 134 _mjd++; 135 } 136 while ( _sec < 0 ) { 137 _sec+=86400; 138 _mjd--; 139 } 140 return *this; 141 } 142 36 // 37 ////////////////////////////////////////////////////////////////////////////// 143 38 t_time& t_time::setmjd(double daysec, int mjd) { 144 39 _sec = daysec; … … 154 49 return *this; 155 50 } 156 157 t_time& t_time::setmjd(double mjddec) { 158 _mjd = static_cast<unsigned int>(mjddec); 159 _sec = (mjddec - _mjd)*86400.0; 160 return *this; 51 52 // 53 ////////////////////////////////////////////////////////////////////////////// 54 void t_time::jdgp(double tjul, double & second, long & nweek) { 55 double deltat; 56 deltat = tjul - 44244.0 ; 57 nweek = (long) floor(deltat/7.0); 58 second = (deltat - (nweek)*7.0)*86400.0; 161 59 } 162 60 163 t_time& t_time::operator++() { //prefix 164 return (*this) += 1.0; 61 // 62 ////////////////////////////////////////////////////////////////////////////// 63 unsigned int t_time::mjd() const { 64 return _mjd; 65 } 66 67 // 68 ////////////////////////////////////////////////////////////////////////////// 69 double t_time::daysec() const { 70 return _sec; 165 71 } 166 72 167 t_time t_time::operator++(int) { //postfix 168 t_time tmp = (*this); 169 (*this) += 1.0; 170 return tmp; 73 // 74 ////////////////////////////////////////////////////////////////////////////// 75 unsigned int t_time::gpsw() const { 76 double gsec; 77 long gpsw; 78 jdgp(_mjd, gsec, gpsw); 79 return (int)gpsw; 171 80 } 172 81 173 t_time& t_time::operator--() { //prefix 174 return (*this) -= 1.0; 82 // 83 ////////////////////////////////////////////////////////////////////////////// 84 double t_time::gpssec() const { 85 double gsec; 86 long gpsw; 87 jdgp(_mjd, gsec, gpsw); 88 return gsec + _sec; 175 89 } 176 90 177 t_time t_time::operator--(int) { //postfix 178 t_time tmp = *this; 179 (*this) -= 1.0; 180 return tmp; 91 // 92 ////////////////////////////////////////////////////////////////////////////// 93 bool t_time::operator!=(const t_time &time1) const { 94 if ( ((*this) - time1) != 0 ) return 1; 95 return 0; 181 96 } 182 97 98 // 99 ////////////////////////////////////////////////////////////////////////////// 183 100 t_time t_time::operator+(double sec) const { 184 101 int mjd = this->mjd(); … … 188 105 } 189 106 107 // 108 ////////////////////////////////////////////////////////////////////////////// 190 109 t_time t_time::operator-(double sec) const { 191 110 return (*this) + (-sec); 192 111 } 193 112 194 t_time& t_time::operator+=(double sec) { 195 _sec+=sec; 196 while ( _sec >= 86400 ) { 197 _sec-=86400; 198 _mjd++; 199 } 200 while ( _sec < 0 ) { 201 _sec+=86400; 202 _mjd--; 203 } 204 return *this; 205 } 206 207 t_time& t_time::operator-=(double sec) { 208 return (*this)+=(-sec); 209 } 210 113 // 114 ////////////////////////////////////////////////////////////////////////////// 211 115 double t_time::operator-(const t_time &time1) const { 212 116 int mjdDiff = this->_mjd - time1._mjd; … … 219 123 } 220 124 221 bool t_time::operator<(const t_time &time1) const { 222 if ( ((*this) - time1) < 0 ) return 1; 223 return 0; 224 } 225 226 bool t_time::operator<=(const t_time &time1) const { 227 if ( ((*this) - time1) <= 0 ) return 1; 228 return 0; 229 } 230 231 bool t_time::operator>(const t_time &time1) const { 232 if ( ((*this) - time1) > 0 ) return 1; 233 return 0; 234 } 235 236 bool t_time::operator>=(const t_time &time1) const { 237 if ( ((*this) - time1) >= 0 ) return 1; 238 return 0; 239 } 240 241 bool t_time::operator==(const t_time &time1) const { 242 if ( ((*this) - time1) == 0 ) return 1; 243 return 0; 244 } 245 246 bool t_time::operator!=(const t_time &time1) const { 247 if ( ((*this) - time1) != 0 ) return 1; 248 return 0; 249 } 250 251 void t_time::civil_datum(unsigned int &year, 252 unsigned int &month, unsigned int &day) const { 253 double day_d; 254 long int yy, mm; 255 jmt(_mjd, yy, mm, day_d); 256 year = yy; 257 month = mm; 258 day = static_cast<unsigned int>(day_d); 259 } 260 261 void t_time::civil_datum(int &year, int &month, int &day) const { 262 unsigned int yy = year; 263 unsigned int mm = month; 264 unsigned int dd = day; 265 266 civil_datum(yy, mm, dd); 267 268 year = yy; month = mm; day = dd; 269 } 270 125 // 126 ////////////////////////////////////////////////////////////////////////////// 271 127 void t_time::civil_time(unsigned int &hour, unsigned int &min, 272 128 double &sec) const { … … 284 140 } 285 141 286 void t_time::civil_time(int &hour, int &min, double &sec) const { 287 unsigned int hh, mm; 288 hh = hour; 289 mm = min; 290 291 civil_time(hh, mm, sec); 292 293 hour = hh; min = mm; 294 } 295 296 unsigned int t_time::year() const { 297 unsigned int year, month, day; 298 this->civil_datum(year, month, day); 299 return year; 300 } 301 302 unsigned int t_time::month() const { 303 unsigned int year, month, day; 304 this->civil_datum(year, month, day); 305 return month; 306 } 307 308 unsigned int t_time::day() const { 309 unsigned int year, month, day; 310 this->civil_datum(year, month, day); 311 return (unsigned int)day; 312 } 313 314 unsigned int t_time::hour() const { 315 unsigned int hour, minute; 316 double sec; 317 this->civil_time(hour, minute, sec); 318 return hour; 319 } 320 321 unsigned int t_time::minute() const { 322 unsigned int hour, minute; 323 double sec; 324 this->civil_time(hour, minute, sec); 325 return minute; 326 } 327 328 double t_time::sec() const { 329 unsigned int hour, minute; 330 double sec; 331 this->civil_time(hour, minute, sec); 332 return sec; 333 } 334 335 unsigned int t_time::doy() const { 336 return _mjd - (int)djul(this->year(), 1, 1) + 1; 337 } 338 339 unsigned int t_time::mjd() const { 340 return _mjd; 341 } 342 343 double t_time::mjddec() const { 344 return _mjd + _sec / 86400.0; 345 } 346 347 double t_time::daysec() const { 348 return _sec; 349 } 350 351 unsigned int t_time::gpsw() const { 352 double gsec; 353 long gpsw; 354 jdgp(_mjd, gsec, gpsw); 355 return (int)gpsw; 356 } 357 358 unsigned int t_time::dow() const { 359 double gsec; 360 long gpsw; 361 jdgp(_mjd+_sec/86400.0, gsec, gpsw); 362 return (unsigned int)(gsec/86400.0); 363 } 364 365 double t_time::gpssec() const { 366 double gsec; 367 long gpsw; 368 jdgp(_mjd, gsec, gpsw); 369 return gsec + _sec; 370 } 371 372 t_time::operator string() const { 373 return datestr() + ' ' + timestr(); 374 } 375 142 // 143 ////////////////////////////////////////////////////////////////////////////// 376 144 string t_time::timestr(unsigned numdec, char sep) const { 377 145 ostringstream str; … … 406 174 } 407 175 408 string t_time::datestr(bool digit2year, char sep) const {409 ostringstream str;410 str.setf(ios::fixed);411 str << setfill('0');412 if (digit2year) {413 str << setw(2) << (year() % 100);414 }415 else {416 str << setw(4) << year();417 }418 if (sep) str << sep;419 str << setw(2) << month();420 if (sep) str << sep;421 str << setw(2) << day();422 return str.str();423 } -
trunk/BNC/t_time.h
r2027 r2122 7 7 class t_time { 8 8 public: 9 static double djul(long j1, long m1, double tt); 10 static double gpjd(double second, int nweek) ; 11 static void jdgp(double tjul, double & second, long & nweek); 12 static void jmt (double djul, long& jj, long& mm, double& dd); 9 t_time() {this->reset();} 10 t_time(int gpsw, double gpssec); 13 11 14 t_time() {this->reset();} 15 t_time(int gpsw, int dow, double daysec); 16 t_time(int gpsw, double gpssec); 17 t_time(int hour, int min, double sec, int day, int month, int year); 18 t_time(double daysec, int day, int month, int year); 19 t_time(double daysec, int doy, unsigned int year); 12 t_time& set(int gpsw, double gpssec); 20 13 21 void reset() {_mjd = 0; _sec = 0;} 22 bool undef() const {return (_mjd==0 && _sec==0);} 23 bool valid() const {return (_mjd!=0 || _sec!=0);} 14 unsigned int mjd() const; 15 double daysec() const; 16 unsigned int gpsw() const; 17 double gpssec() const; 24 18 25 t_time & operator++(); 26 t_time operator++(int); 19 bool operator!=(const t_time &time1) const; 20 double operator-(const t_time &time1) const; 21 t_time operator-(double sec) const; 22 t_time operator+(double sec) const; 27 23 28 t_time & operator--();29 t_time operator--(int);30 31 t_time operator+(double sec) const;32 t_time operator-(double sec) const;33 34 t_time& operator+=(double sec);35 t_time& operator-=(double sec);36 37 double operator-(const t_time &time1) const;38 39 bool operator< (const t_time &time1) const;40 bool operator<=(const t_time &time1) const;41 bool operator> (const t_time &time1) const;42 bool operator>=(const t_time &time1) const;43 bool operator==(const t_time &time1) const;44 bool operator!=(const t_time &time1) const;45 46 unsigned int gpsw() const;47 unsigned int dow() const;48 double daysec() const;49 double gpssec() const;50 51 unsigned int doy() const;52 unsigned int mjd() const;53 double mjddec() const;54 55 unsigned int year() const;56 unsigned int month() const;57 unsigned int day() const;58 unsigned int hour() const;59 unsigned int minute() const;60 double sec() const;61 62 void civil_datum(unsigned int& year,63 unsigned int& month, unsigned int& day) const;64 void civil_time (unsigned int& hour, unsigned int& min, double& sec) const;65 void civil_datum(int& year,66 int& month, int& day) const;67 void civil_time (int& hour, int& min, double& sec) const;68 69 t_time& set(int gpsw, int dow, double daysec);70 t_time& set(int gpsw, double gpssec);71 t_time& set(int hour, int min, double sec, int day, int month, int year);72 t_time& set(double daysec, int day, int month, int year);73 t_time& set(double daysec, int doy, int year);74 t_time& setmjd(double daysec, int mjd);75 t_time& setmjd(double mjddec);76 77 t_time& setmachinetime(bool gmt = false);78 79 operator std::string() const;80 std::string datestr(bool digit2year = false, char sep = '-') const;81 24 std::string timestr(unsigned numdec = 3, char sep = ':') const; 82 25 83 26 private: 27 t_time& setmjd(double daysec, int mjd); 28 void reset() {_mjd = 0; _sec = 0;} 29 void civil_time (unsigned int& hour, unsigned int& min, double& sec) const; 30 static void jdgp(double tjul, double & second, long & nweek); 31 84 32 unsigned int _mjd; 85 33 double _sec;
Note:
See TracChangeset
for help on using the changeset viewer.