00001
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <math.h>
00015
00016
00018
00019 inline CTBtime::CTBtime()
00020 : md_time(-1.)
00021 {}
00022
00023
00025
00026 inline CTBtime::CTBtime(double d_time)
00027 : md_time(d_time)
00028 {}
00029
00030
00032
00033 inline bool CTBtime::Valid() const
00034 {
00035 return md_time >= 0.;
00036 }
00037
00038
00040
00041 inline CTBint32 CTBtime::UnixTime() const
00042 {
00043 return (CTBint32) floor(md_time);
00044 }
00045
00046
00048
00049 inline bool CTBtime::operator!() const
00050 {
00051 return !Valid();
00052 }
00053
00054
00056
00057 inline CTBtime& CTBtime::operator=(double d_time)
00058 {
00059 md_time = d_time;
00060 return *this;
00061 }
00062
00063
00065
00066 inline CTBtime& CTBtime::operator+=(double d_delta)
00067 {
00068 md_time += d_delta;
00069 return *this;
00070 }
00071
00072
00074
00075 inline CTBtime& CTBtime::operator-=(double d_delta)
00076 {
00077 md_time -= d_delta;
00078 return *this;
00079 }
00080
00081
00083
00084 inline CTBtime::operator double () const
00085 {
00086 return md_time;
00087 }
00088
00089
00095 inline CTBtime operator+(const CTBtime& time, double d_delta)
00096 {
00097 return CTBtime((double)time + d_delta);
00098 }
00099
00100
00106 inline CTBtime operator+(double d_delta, const CTBtime& time)
00107 {
00108 return CTBtime((double)time + d_delta);
00109 }
00110
00111
00117 inline CTBtime operator-(const CTBtime& time, double d_delta)
00118 {
00119 return CTBtime((double)time - d_delta);
00120 }
00121
00122
00128 inline double operator-(const CTBtime& lhs, const CTBtime& rhs)
00129 {
00130 return (double)lhs - (double)rhs;
00131 }
00132
00133
00139 inline bool operator==(const CTBtime& lhs, const CTBtime& rhs)
00140 {
00141 return (double)lhs == (double)rhs;
00142 }
00143
00144
00150 inline bool operator<(const CTBtime& lhs, const CTBtime& rhs)
00151 {
00152 return (double)lhs < (double)rhs;
00153 }
00154
00155
00161 inline ostream& operator<<(ostream& os, const CTBtime& obj)
00162 {
00163 obj.ToStream(os);
00164 return os;
00165 }
00166
00167
00173 inline istream& operator>>(istream& is, CTBtime& obj)
00174 {
00175 obj.FromStream(is);
00176 return is;
00177 }
00178
00179
00180
00182
00183 inline CTBtimeParsed::CTBtimeParsed()
00184 {
00185 Init();
00186 }
00187
00188
00190
00191 inline CTBtimeParsed::CTBtimeParsed(const CTBtime& time)
00192 {
00193 operator=(time);
00194 }
00195
00196
00198
00199 inline int CTBtimeParsed::Year() const
00200 {
00201 return mi_year;
00202 }
00203
00204
00206
00207 inline int CTBtimeParsed::Month() const
00208 {
00209 return mi_month;
00210 }
00211
00212
00214
00215 inline int CTBtimeParsed::Day() const
00216 {
00217 return mi_day;
00218 }
00219
00220
00222
00223 inline int CTBtimeParsed::WeekDay() const
00224 {
00225 return mi_wday;
00226 }
00227
00228
00230
00231 inline int CTBtimeParsed::YearDay() const
00232 {
00233 return mi_yday;
00234 }
00235
00236
00238
00239 inline int CTBtimeParsed::Hour() const
00240 {
00241 return mi_hour;
00242 }
00243
00244
00246
00247 inline int CTBtimeParsed::Minute() const
00248 {
00249 return mi_min;
00250 }
00251
00252
00254
00255 inline int CTBtimeParsed::Second() const
00256 {
00257 return mi_sec;
00258 }
00259
00260
00262
00263 inline int CTBtimeParsed::Microsecond() const
00264 {
00265 return mi_usec;
00266 }
00267
00268
00270
00271 inline int CTBtimeParsed::TimeZoneOffset() const
00272 {
00273 return mi_tzoffset;
00274 }
00275
00276
00278
00279 inline const char* CTBtimeParsed::TimeZoneName() const
00280 {
00281 return mc_tzname;
00282 }
00283
00284
00286
00287 inline bool CTBtimeParsed::DaylightSavingTime() const
00288 {
00289 return mi_dst > 0;
00290 }
00291
00292
00294
00295 inline void CTBtimeParsed::Date(int i_year, int i_month, int i_day)
00296 {
00297 mi_year = i_year;
00298 mi_month = i_month;
00299 mi_day = i_day;
00300 mi_wday = -1;
00301 mi_yday = -1;
00302 return;
00303 }
00304
00305
00307
00308 inline void CTBtimeParsed::Time(int i_hour, int i_min, int i_sec,
00309 int i_usec, int i_dst)
00310 {
00311 mi_hour = i_hour;
00312 mi_min = i_min;
00313 mi_sec = i_sec;
00314 mi_usec = i_usec;
00315 mi_dst = i_dst;
00316 return;
00317 }
00318
00319
00321
00322 inline void CTBtimeParsed::DateTime(int i_year, int i_month, int i_day,
00323 int i_hour, int i_min, int i_sec,
00324 int i_usec, int i_dst)
00325 {
00326 Date(i_year,i_month,i_day);
00327 Time(i_hour,i_min,i_sec,i_usec,i_dst);
00328 return;
00329 }
00330
00331
00333
00334 inline bool CTBtimeParsed::Valid() const
00335 {
00336 return mi_wday >= 0;
00337 }
00338
00339
00341
00342 inline bool CTBtimeParsed::operator!() const
00343 {
00344 return !Valid();
00345 }
00346
00347
00349
00350 inline CTBtimeParsed& CTBtimeParsed::operator=(const CTBtime& time)
00351 {
00352 ParseTime(time);
00353 return *this;
00354 }
00355
00356
00358
00359 inline CTBtimeParsed::operator void* () const
00360 {
00361 return (Valid()) ? (void*) this : 0;
00362 }
00363
00364
00370 inline ostream& operator<<(ostream& os, const CTBtimeParsed& obj)
00371 {
00372 obj.ToStream(os);
00373 return os;
00374 }
00375
00376
00382 inline istream& operator>>(istream& is, CTBtimeParsed& obj)
00383 {
00384 obj.FromStream(is);
00385 return is;
00386 }
00387