SNAP Library 2.4, User Reference  2015-05-11 19:40:56
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
tm.h
Go to the documentation of this file.
1 #include "bd.h"
2 
4 // Forward
5 class TILx;
6 class TOLx;
7 class TTm;
8 
10 // Time-Units (round time to one of the buckets)
11 typedef enum {
13  tmu1Hour, tmu2Hour, tmu4Hour, tmu6Hour, tmu12Hour, tmuDay, tmuWeek, // Sunday is the start of the week
15  // wrap around time
16  // tmuWrapHour, tmuWrapDay, tmuWrapWeek, tmuWrapMonth, tmuWrapYear
17 } TTmUnit;
18 
20 // Time-Info
21 class TTmInfo{
22 private:
23  static bool InitP;
24  static TStrV UsMonthNmV;
25  static TStrV SiMonthNmV;
28  static void InitMonthNmV();
29  static void InitDayOfWeekNmV();
30  static void EnsureInit(){
31  if (!InitP){InitMonthNmV(); InitDayOfWeekNmV(); InitP=true;}}
32 public:
33  static int GetMonthN(const TStr& MonthNm, const TLoc& Loc=lUs);
34  static bool IsMonthNm(const TStr& MonthNm, const TLoc& Loc=lUs){
35  return GetMonthN(MonthNm, Loc)!=-1;}
36  static TStr GetMonthNm(const int& MonthN, const TLoc& Loc=lUs);
37  static int GetDayOfWeekN(const TStr& DayOfWeekNm, const TLoc& Loc=lUs);
38  static bool IsDayOfWeekNm(const TStr& DayOfWeekNm, const TLoc& Loc=lUs){
39  return GetDayOfWeekN(DayOfWeekNm, Loc)!=-1;}
40  static TStr GetDayOfWeekNm(const int& DayOfWeekN, const TLoc& Loc=lUs);
41  static TStr GetHmFromMins(const int& Mins);
42  static int GetTmUnitSecs(const TTmUnit& TmUnit);
43  static TStr GetTmUnitStr(const TTmUnit& TmUnit);
44  static TStr GetTmZoneDiffStr(const TStr& TmZoneStr);
45 
46  // day-of-week numbers
47  static const int SunN; static const int MonN;
48  static const int TueN; static const int WedN;
49  static const int ThuN; static const int FriN;
50  static const int SatN;
51 
52  // month numbers
53  static const int JanN; static const int FebN;
54  static const int MarN; static const int AprN;
55  static const int MayN; static const int JunN;
56  static const int JulN; static const int AugN;
57  static const int SepN; static const int OctN;
58  static const int NovN; static const int DecN;
59 
60  // time duration (msecs)
61  static uint64 GetMinMSecs(){return 60*1000;}
62  static uint64 GetHourMSecs(){return 60*60*1000;}
63  static uint64 GetDayMSecs(){return 24*60*60*1000;}
64  static uint64 GetWeekMSecs(){return 7*24*60*60*1000;}
65 };
66 
68 // Julian-Dates
70 public:
71  static int LastJulianDate; /* last day to use Julian calendar */
72  static int LastJulianDateN; /* jdn of same */
73  static int GetJulianDateN(int d, int m, int y);
74  static void GetCalendarDate(int jdn, int& dd, int& mm, int& yy);
75 };
76 
78 // Seconds-Time
79 // NOTE: Time origin is relative to time zone. Regardless of computer time
80 // zone second 0 maps to "Jan 1 1970 00:00" (so time zone information is lost)
81 class TSecTm {
82 private:
83  TUInt AbsSecs; // pretend that local time zone is UTC
84 private:
85  // functions that interact with C time functions (time.h)
86  static bool GetTmSec(const int& YearN, const int& MonthN, const int& DayN,
87  const int& HourN, const int& MinN, const int& SecN, uint& AbsSec);
88  static bool GetTmSec(struct tm& Tm, uint& AbsSec);
89  static bool GetTmStruct(const uint& AbsSec, struct tm& Tm);
90  static time_t MkGmTime(struct tm *t); // implementation of _mkgmtime
91 public:
92  TSecTm(): AbsSecs(TUInt::Mx){}
93  explicit TSecTm(const uint& _AbsSecs): AbsSecs(_AbsSecs){}
94  operator uint() const {return AbsSecs.Val;}
95  TSecTm(const TSecTm& SecTm): AbsSecs(SecTm.AbsSecs){}
96  TSecTm(const int& YearN, const int& MonthN, const int& DayN,
97  const int& HourN=0, const int& MinN=0, const int& SecN=0);
98  TSecTm(const TTm& Tm);
99  explicit TSecTm(const PXmlTok& XmlTok);
100  PXmlTok GetXmlTok() const;
101  TSecTm(TSIn& SIn): AbsSecs(SIn){}
102  void Load(TSIn& SIn){AbsSecs.Load(SIn);}
103  void Save(TSOut& SOut) const {AbsSecs.Save(SOut);}
104 
105  TSecTm& operator=(const TSecTm& SecTm){
106  AbsSecs=SecTm.AbsSecs; return *this;}
107  TSecTm& operator=(const uint& _AbsSecs){
108  AbsSecs=_AbsSecs; return *this;}
109  TSecTm& operator+=(const uint& Secs){
110  IAssert(IsDef()); AbsSecs()+=Secs; return *this;}
111  TSecTm& operator-=(const uint& Secs){
112  IAssert(IsDef()); AbsSecs()-=Secs; return *this;}
113  bool operator==(const TSecTm& SecTm) const {
114  return AbsSecs==SecTm.AbsSecs;}
115  bool operator<(const TSecTm& SecTm) const {
116  IAssert(IsDef()&&SecTm.IsDef()); return AbsSecs<SecTm.AbsSecs;}
117  int GetMemUsed() const {return AbsSecs.GetMemUsed();}
118 
119  int GetPrimHashCd() const {return AbsSecs.GetPrimHashCd();}
120  int GetSecHashCd() const {return AbsSecs.GetSecHashCd();}
121 
122  // definition
123  bool IsDef() const {return uint(AbsSecs)!=TUInt::Mx;}
125 
126  // string retrieval
127  TStr GetStr(const TLoc& Loc=lUs) const;
128  TStr GetStr(const TTmUnit& TmUnit) const;
129  TStr GetDtStr(const TLoc& Loc=lUs) const;
130  TStr GetDtMdyStr() const;
131  TStr GetDtYmdStr() const;
132  TStr GetYmdTmStr() const; // returns "y-m-d h:m:s"
133  TStr GetTmStr() const;
134  TStr GetTmMinStr() const;
135  TStr GetDtTmSortStr() const;
136  TStr GetDtTmSortFNmStr() const;
137 
138  // component retrieval
139  int GetYearN() const;
140  int GetMonthN() const;
141  TStr GetMonthNm(const TLoc& Loc=lUs) const;
142  int GetDayN() const;
143  int GetDayOfWeekN() const;
144  TStr GetDayOfWeekNm(const TLoc& Loc=lUs) const;
145  int GetHourN() const;
146  int GetMinN() const;
147  int GetSecN() const;
148  void GetComps(int& Year, int& Month, int& Day, int& Hour, int& Min, int& Sec) const;
149  uint GetAbsSecs() const {return AbsSecs();}
150  TSecTm Round(const TTmUnit& TmUnit) const;
151  uint GetInUnits(const TTmUnit& TmUnit) const;
152  TStr GetDayPart() const;
153 
154  // additions/substractions
155  TSecTm& AddSecs(const int& Secs){
156  IAssert(IsDef()); AbsSecs.Val+=uint(Secs); return *this;}
157  TSecTm& SubSecs(const int& Secs){
158  IAssert(IsDef() && uint(Secs) < AbsSecs); AbsSecs.Val-=uint(Secs); return *this;}
159  TSecTm& AddMins(const int& Mins){
160  IAssert(IsDef()); AbsSecs.Val+=uint(Mins*60); return *this;}
161  TSecTm& SubMins(const int& Mins){
162  IAssert(IsDef() && uint(Mins*60) < AbsSecs); AbsSecs.Val-=uint(Mins*60); return *this;}
163  TSecTm& AddHours(const int& Hours){
164  IAssert(IsDef()); AbsSecs.Val+=uint(Hours*3600); return *this;}
165  TSecTm& SubHours(const int& Hours){
166  IAssert(IsDef() && uint(Hours*3600) < AbsSecs); AbsSecs.Val-=uint(Hours*3600); return *this;}
167  TSecTm& AddDays(const int& Days){
168  IAssert(IsDef()); AbsSecs.Val+=uint(Days*24*3600); return *this;}
169  TSecTm& SubDays(const int& Days){
170  IAssert(IsDef() && uint(Days*24*3600) < AbsSecs); AbsSecs.Val-=uint(Days*24*3600); return *this;}
171  TSecTm& AddWeeks(const int& Weeks){
172  IAssert(IsDef()); AbsSecs.Val+=uint(Weeks*7*24*3600); return *this;}
173  TSecTm& SubWeeks(const int& Weeks){
174  IAssert(IsDef() && uint(Weeks*7*24*3600) < AbsSecs); AbsSecs.Val-=uint(Weeks*7*24*3600); return *this;}
175  static uint GetDSecs(const TSecTm& SecTm1, const TSecTm& SecTm2);
176  /*friend TSecTm operator+(const TSecTm& SecTm, const uint& Secs){
177  return TSecTm(SecTm)+=Secs;}
178  friend TSecTm operator-(const TSecTm& SecTm, const uint& Secs){
179  return TSecTm(SecTm)-=Secs;}
180  friend TSecTm operator+(const TSecTm& SecTm1, const TSecTm& SecTm2){
181  return TSecTm(SecTm1)+=SecTm2.AbsSecs;}
182  friend TSecTm operator-(const TSecTm& SecTm1, const TSecTm& SecTm2){
183  return TSecTm(SecTm1)-=SecTm2.AbsSecs;}*/
184 
185  // time construction
186  static TSecTm GetZeroTm(){return TSecTm(0).AddHours(23);}
187  static TSecTm GetZeroWeekTm();
188  static TSecTm GetCurTm();
189  static TSecTm GetCurDtTm(){return GetDtTm(GetCurTm());}
190  static TSecTm GetDtTmFromHmsStr(const TStr& HmsStr);
191  static TSecTm GetDtTmFromMdyStr(const TStr& MdyStr);
192  static TSecTm GetDtTmFromDmyStr(const TStr& DmyStr);
193  static TSecTm GetDtTmFromMdyHmsPmStr(const TStr& MdyHmsPmStr,
194  const char& DateSepCh='/', const char& TimeSepCh=':');
195  static TSecTm GetDtTmFromYmdHmsStr(const TStr& YmdHmsPmStr,
196  const char& DateSepCh='-', const char& TimeSepCh=':');
197  static TSecTm GetDtTmFromStr(const TChA& YmdHmsPmStr, const int& YearId=0, const int& MonId=1,
198  const int& DayId=2, const int& HourId=3, const int& MinId=4, const int& SecId=5);
199  static TSecTm GetDtTm(const int& YearN, const int& MonthN, const int& DayN);
200  static TSecTm GetDtTm(const TSecTm& Tm);
201 
202  // text load/save
203  static TSecTm LoadTxt(TILx& Lx);
204  void SaveTxt(TOLx& Lx) const;
205 };
209 
211 // Time
212 class TTm{
213 private:
216 public:
217  TTm():
218  Year(-1), Month(-1), Day(-1), DayOfWeek(-1),
219  Hour(-1), Min(-1), Sec(-1), MSec(-1){}
220  TTm(const TTm& Tm):
221  Year(Tm.Year), Month(Tm.Month), Day(Tm.Day), DayOfWeek(Tm.DayOfWeek),
222  Hour(Tm.Hour), Min(Tm.Min), Sec(Tm.Sec), MSec(Tm.MSec){}
224  const int& _Year, const int& _Month, const int& _Day, const int& _DayOfWeek=-1,
225  const int& _Hour=0, const int& _Min=0, const int& _Sec=0, const int& _MSec=0):
226  Year(_Year), Month(_Month), Day(_Day), DayOfWeek(_DayOfWeek),
227  Hour(_Hour), Min(_Min), Sec(_Sec), MSec(_MSec){}
228  TTm(const TSecTm& SecTm):
229  Year(SecTm.GetYearN()), Month(SecTm.GetMonthN()), Day(SecTm.GetDayN()),
230  DayOfWeek(SecTm.GetDayOfWeekN()), Hour(SecTm.GetHourN()),
231  Min(SecTm.GetMinN()), Sec(SecTm.GetSecN()), MSec(0){}
232  ~TTm(){}
233  TTm(TSIn& SIn):
234  Year(SIn), Month(SIn), Day(SIn), DayOfWeek(SIn),
235  Hour(SIn), Min(SIn), Sec(SIn), MSec(SIn){}
236  void Save(TSOut& SOut) const {
237  Year.Save(SOut); Month.Save(SOut); Day.Save(SOut); DayOfWeek.Save(SOut);
238  Hour.Save(SOut); Min.Save(SOut); Sec.Save(SOut); MSec.Save(SOut);}
239 
240  TTm& operator=(const TTm& Tm){
241  Year=Tm.Year; Month=Tm.Month; Day=Tm.Day; DayOfWeek=Tm.DayOfWeek;
242  Hour=Tm.Hour; Min=Tm.Min; Sec=Tm.Sec; MSec=Tm.MSec;
243  return *this;}
244  bool operator==(const TTm& Tm) const {
245  return
246  (Year==Tm.Year)&&(Month==Tm.Month)&&(Day==Tm.Day)&&
247  (Hour==Tm.Hour)&&(Min==Tm.Min)&&(Sec==Tm.Sec)&&(MSec==Tm.MSec);}
248  bool operator<(const TTm& Tm) const {
249  return
250  (Year<Tm.Year)||
251  ((Year==Tm.Year)&&(Month<Tm.Month))||
252  ((Year==Tm.Year)&&(Month==Tm.Month)&&(Day<Tm.Day))||
253  (((Year==Tm.Year)&&(Month==Tm.Month)&&(Day==Tm.Day))&&(
254  (Hour<Tm.Hour)||
255  ((Hour==Tm.Hour)&&(Min<Tm.Min))||
256  ((Hour==Tm.Hour)&&(Min==Tm.Min)&&(Sec<Tm.Sec))||
257  ((Hour==Tm.Hour)&&(Min==Tm.Min)&&(Sec==Tm.Sec)&&(MSec<Tm.MSec))));} // saxo
258  int GetMemUsed() const {return sizeof(TTm);}
259 
260  int GetPrimHashCd() const {return Year*Month*Day+Hour*Min*Sec*MSec;}
261  int GetSecHashCd() const {return Year*Month*Day;}
262 
263  // defined
264  bool IsDef() const {
265  return (Year!=-1)&&(Month!=-1)&&(Day!=-1)&&
266  (Hour!=-1)&&(Min!=-1)&&(Sec!=-1)&&(MSec!=-1);}
267  void Undef(){
268  Year=-1; Month=-1; Day=-1; DayOfWeek=-1;
269  Hour=-1; Min=-1; Sec=-1; MSec=-1;}
270  // check if time is defined
271  bool IsTimeDef() const { return !(Hour==0 && Min==0 && Sec==0 && MSec==0); }
272 
273  // get components
274  int GetYear() const {return Year;}
275  int GetMonth() const {return Month;}
277  int GetDay() const {return Day;}
278  int GetDayOfWeek() const {return DayOfWeek;}
280  int GetHour() const {return Hour;}
281  int GetMin() const {return Min;}
282  int GetSec() const {return Sec;}
283  int GetMSec() const {return MSec;}
284 
285  // time string formats
286  TStr GetStr(const bool& MSecP=true) const;
287  TStr GetYMDDashStr() const;
288  TStr GetHMSTColonDotStr(const bool& FullP=false, const bool& MSecP=true) const;
289  TStr GetWebLogDateStr() const {return GetYMDDashStr();}
290  TStr GetWebLogTimeStr() const {return GetHMSTColonDotStr(false);}
291  TStr GetWebLogDateTimeStr(const bool& FullP=false, const TStr& DateTimeSepCh=" ", const bool& MSecP=true) const {
292  return GetYMDDashStr()+DateTimeSepCh+GetHMSTColonDotStr(FullP, MSecP);}
293  TStr GetIdStr() const;
294  TSecTm GetSecTm() const {
295  return TSecTm(Year, Month, Day, Hour, Min, Sec);}
296 
297  // calculation
298  void AddTime(const int& Hours, const int& Mins=0, const int& Secs=0, const int& MSecs=0);
299  void AddDays(const int& Days){AddTime(Days*24);}
300  void SubTime(const int& Hours, const int& Mins=0, const int& Secs=0, const int& MSecs=0);
301  void SubDays(const int& Days){SubTime(Days*24);}
302 
303  // static functions
304  static TTm GetCurUniTm();
305  static TTm GetUniqueCurUniTm();
306  static TTm GetUniqueCurUniTm(const int& UniqueSpaces, const int& UniqueSpaceN);
307  static TTm GetCurLocTm();
308  static uint64 GetCurUniMSecs();
309  static uint64 GetCurLocMSecs();
310  static uint64 GetMSecsFromTm(const TTm& Tm);
311  static TTm GetTmFromMSecs(const uint64& MSecs);
312  static uint GetMSecsFromOsStart();
313  static uint64 GetPerfTimerFq();
314  static uint64 GetPerfTimerTicks();
315  static void GetDiff(const TTm& Tm1, const TTm& Tm2, int& Days,
316  int& Hours, int& Mins, int& Secs, int& MSecs);
317  static uint64 GetDiffMSecs(const TTm& Tm1, const TTm& Tm2);
318  static uint64 GetDiffSecs(const TTm& Tm1, const TTm& Tm2){
319  return GetDiffMSecs(Tm1, Tm2)/uint64(1000);}
320  static uint64 GetDiffMins(const TTm& Tm1, const TTm& Tm2){
321  return GetDiffMSecs(Tm1, Tm2)/uint64(1000*60);}
322  static uint64 GetDiffHrs(const TTm& Tm1, const TTm& Tm2){
323  return GetDiffMSecs(Tm1, Tm2)/uint64(1000*60*60);}
324  static uint64 GetDiffDays(const TTm& Tm1, const TTm& Tm2){
325  return GetDiffMSecs(Tm1, Tm2)/uint64(1000*60*60*24);}
326  static TTm GetLocTmFromUniTm(const TTm& Tm);
327  static TTm GetUniTmFromLocTm(const TTm& Tm);
328  static TTm GetTmFromWebLogTimeStr(const TStr& TimeStr,
329  const char TimeSepCh=':', const char MSecSepCh='.');
330  static TTm GetTmFromWebLogDateTimeStr(const TStr& DateTimeStr,
331  const char DateSepCh='-', const char TimeSepCh=':',
332  const char MSecSepCh='.', const char DateTimeSepCh=' ');
333  static TTm GetTmFromIdStr(const TStr& IdStr);
334 
335  // get unix timestamp
336  static uint GetDateTimeInt(const int& Year = 0, const int& Month = 0,
337  const int& Day = 1, const int& Hour = 0, const int& Min = 0,
338  const int& Sec = 0);
339  static uint GetDateIntFromTm(const TTm& Tm);
340  static uint GetMonthIntFromTm(const TTm& Tm);
341  static uint GetYearIntFromTm(const TTm& Tm);
342  static uint GetDateTimeIntFromTm(const TTm& Tm);
343  static TTm GetTmFromDateTimeInt(const uint& DateTimeInt);
344  static TSecTm GetSecTmFromDateTimeInt(const uint& DateTimeInt);
345 };
346 typedef TVec<TTm> TTmV;
351 
353 // Execution-Time
354 class TExeTm{
355 private:
356  int LastTick;
357 public:
358  TExeTm(): LastTick(0) { Tick(); }
359  TExeTm(const TExeTm& Tm): LastTick(Tm.LastTick) { }
360  TExeTm& operator=(const TExeTm& Tm){
361  LastTick=Tm.LastTick; return *this;}
362 
363  void Tick(){LastTick=(int)clock();}
364  int GetTime() const {return int(clock()-LastTick);}
365  double GetSecs() const {return double(clock()-LastTick)/double(CLOCKS_PER_SEC);}
366  int GetSecInt() { return TFlt::Round(GetSecs()); }
367  const char* GetStr() const {return GetTmStr();}
368  TStr GetStr2() const {return GetTmStr();}
369  const char* GetTmStr() const { static char TmStr[32];
370  if (GetSecs() < 60) { sprintf(TmStr, "%.2fs", GetSecs()); }
371  else if (GetSecs() < 3600) { sprintf(TmStr, "%02dm%02ds", int(GetSecs())/60, int(GetSecs())%60); }
372  else { sprintf(TmStr, "%02dh%02dm", int(GetSecs())/3600, (int(GetSecs())%3600)/60); } return TmStr; }
373  static char* GetCurTm(){ static TStr TmStr; TmStr=TSecTm::GetCurTm().GetTmStr(); return TmStr.CStr(); }
374 };
375 
377 // Time-Stop-Watch
379 private:
380  int TmSoFar;
381  bool RunningP;
383 public:
384  TTmStopWatch(const bool& Start = false): TmSoFar(0), RunningP(Start) { }
385 
386  void Start() { if (!RunningP) { RunningP = true; ExeTm.Tick(); } }
387  void Stop() { if (RunningP) { RunningP = false; TmSoFar += ExeTm.GetTime(); } }
388  void Reset(const bool& Start) { TmSoFar = 0; RunningP = Start; ExeTm.Tick(); }
389 
390  int GetTime() const { return TmSoFar + (RunningP ? ExeTm.GetTime() : 0); }
391  double GetSec() const { return double(GetTime()) / double(CLOCKS_PER_SEC); }
392  int GetSecInt() const { return TFlt::Round(GetSec()); }
393  double GetMSec() const { return double(GetTime()) / double(CLOCKS_PER_SEC/1000); }
394  int GetMSecInt() const { return TFlt::Round(GetMSec()); }
395 };
396 
398 // Time-Profiler - poor-man's profiler
400 private:
401  TInt MxNmLen;
403 
404 public:
406  static PTmProfiler New() { return new TTmProfiler; }
407 
408  int AddTimer(const TStr& TimerNm);
409  int GetTimerId(const TStr& TimerNm) const { return TimerH.GetKeyId(TimerNm); }
410  TStr GetTimerNm(const int& TimerId) const { return TimerH.GetKey(TimerId); }
411  int GetTimers() const { return TimerH.Len(); }
412  int GetTimerIdFFirst() const { return TimerH.FFirstKeyId(); }
413  bool GetTimerIdFNext(int& TimerId) const { return TimerH.FNextKeyId(TimerId); }
414  // starts counting
415  void StartTimer(const TStr& TimerNm) { TimerH.GetDat(TimerNm).Start(); }
416  void StartTimer(const int& TimerId) { TimerH[TimerId].Start(); }
417  // stops counting
418  void StopTimer(const TStr& TimerNm) { TimerH.GetDat(TimerNm).Stop(); }
419  void StopTimer(const int& TimerId) { TimerH[TimerId].Stop(); }
420  // reset
421  void ResetAll();
422  void ResetTimer(const TStr& TimerNm) { TimerH.GetDat(TimerNm).Reset(false); }
423  void ResetTimer(const int& TimerId) { TimerH[TimerId].Reset(false); }
424  // report
425  double GetTimerSumSec() const;
426  double GetTimerSec(const int& TimerId) const;
427  void PrintReport(const TStr& ProfileNm = "") const;
428 };
429 
431 // Timer
432 class TTmTimer {
433 private:
434  int MxMSecs;
436 
438 public:
439  TTmTimer(const int& _MxMSecs): MxMSecs(_MxMSecs), StopWatch(true) { }
440 
441  // restarts the timer from 0
442  void Restart() { StopWatch.Reset(true); }
443  // returns true if the time has ran out
444  bool IsTimeUp() const { return (StopWatch.GetMSecInt() > MxMSecs); }
445 };
Definition: ds.h:336
#define IAssert(Cond)
Definition: bd.h:262
void GetComps(int &Year, int &Month, int &Day, int &Hour, int &Min, int &Sec) const
Definition: tm.cpp:609
int GetMSecInt() const
Definition: tm.h:394
void Start()
Definition: tm.h:386
int GetMin() const
Definition: tm.h:281
TStr GetWebLogDateStr() const
Definition: tm.h:289
static TStrV UsMonthNmV
Definition: tm.h:24
TExeTm(const TExeTm &Tm)
Definition: tm.h:359
static TStrV SiDayOfWeekNmV
Definition: tm.h:27
TInt MSec
Definition: tm.h:215
bool GetTimerIdFNext(int &TimerId) const
Definition: tm.h:413
int GetMinN() const
Definition: tm.cpp:597
int GetMemUsed() const
Definition: tm.h:258
static TSecTm GetDtTmFromStr(const TChA &YmdHmsPmStr, const int &YearId=0, const int &MonId=1, const int &DayId=2, const int &HourId=3, const int &MinId=4, const int &SecId=5)
Definition: tm.cpp:910
static char * GetCurTm()
Definition: tm.h:373
int GetMSec() const
Definition: tm.h:283
static void GetCalendarDate(int jdn, int &dd, int &mm, int &yy)
Definition: tm.cpp:327
TSecTm & AddDays(const int &Days)
Definition: tm.h:167
TPair< TTm, TStr > TTmStrPr
Definition: tm.h:347
static TSecTm GetDtTmFromYmdHmsStr(const TStr &YmdHmsPmStr, const char &DateSepCh='-', const char &TimeSepCh=':')
Definition: tm.cpp:854
void Restart()
Definition: tm.h:442
static uint64 GetDayMSecs()
Definition: tm.h:63
static uint64 GetCurLocMSecs()
Definition: tm.cpp:1063
static void InitDayOfWeekNmV()
Definition: tm.cpp:24
TStr GetWebLogDateTimeStr(const bool &FullP=false, const TStr &DateTimeSepCh=" ", const bool &MSecP=true) const
Definition: tm.h:291
Definition: tm.h:69
static uint64 GetDiffMins(const TTm &Tm1, const TTm &Tm2)
Definition: tm.h:320
Definition: tm.h:354
static uint GetDateIntFromTm(const TTm &Tm)
Definition: tm.cpp:1237
TStr GetStr2() const
Definition: tm.h:368
TExeTm ExeTm
Definition: tm.h:382
int GetMonth() const
Definition: tm.h:275
TSecTm & SubSecs(const int &Secs)
Definition: tm.h:157
static void GetDiff(const TTm &Tm1, const TTm &Tm2, int &Days, int &Hours, int &Mins, int &Secs, int &MSecs)
Definition: tm.cpp:1087
static int GetJulianDateN(int d, int m, int y)
Definition: tm.cpp:303
static void EnsureInit()
Definition: tm.h:30
static void InitMonthNmV()
Definition: tm.cpp:9
Definition: tm.h:13
Definition: tm.h:13
int GetYearN() const
Definition: tm.cpp:555
TTmStopWatch(const bool &Start=false)
Definition: tm.h:384
bool IsDef() const
Definition: tm.h:123
Definition: tm.h:12
static const uint Mx
Definition: dt.h:1152
void Save(TSOut &SOut) const
Definition: dt.h:1058
TStr GetYMDDashStr() const
Definition: tm.cpp:970
static TTm GetUniTmFromLocTm(const TTm &Tm)
Definition: tm.cpp:1116
static TSecTm GetDtTmFromHmsStr(const TStr &HmsStr)
Definition: tm.cpp:707
static int LastJulianDate
Definition: tm.h:71
unsigned int uint
Definition: bd.h:11
static uint64 GetCurUniMSecs()
Definition: tm.cpp:1059
int GetDayOfWeekN() const
Definition: tm.cpp:579
double GetMSec() const
Definition: tm.h:393
Definition: tm.h:12
void Save(TSOut &SOut) const
Definition: tm.h:236
TInt Day
Definition: tm.h:214
static bool IsDayOfWeekNm(const TStr &DayOfWeekNm, const TLoc &Loc=lUs)
Definition: tm.h:38
void SubDays(const int &Days)
Definition: tm.h:301
TTm(const int &_Year, const int &_Month, const int &_Day, const int &_DayOfWeek=-1, const int &_Hour=0, const int &_Min=0, const int &_Sec=0, const int &_MSec=0)
Definition: tm.h:223
Definition: tm.h:14
TSecTm & AddMins(const int &Mins)
Definition: tm.h:159
static int GetTmUnitSecs(const TTmUnit &TmUnit)
Definition: tm.cpp:85
static TTm GetCurUniTm()
Definition: tm.cpp:1024
TExeTm()
Definition: tm.h:358
void Load(TSIn &SIn)
Definition: tm.h:102
bool operator==(const TTm &Tm) const
Definition: tm.h:244
int GetSecHashCd() const
Definition: tm.h:120
static uint64 GetHourMSecs()
Definition: tm.h:62
PXmlTok GetXmlTok() const
Definition: tm.cpp:446
static uint GetDateTimeIntFromTm(const TTm &Tm)
Definition: tm.cpp:1249
int GetTime() const
Definition: tm.h:390
TStr GetDtYmdStr() const
Definition: tm.cpp:502
Definition: tm.h:13
int LastTick
Definition: tm.h:356
TSecTm & SubMins(const int &Mins)
Definition: tm.h:161
static const int JanN
Definition: tm.h:53
bool IsTimeUp() const
Definition: tm.h:444
uint GetInUnits(const TTmUnit &TmUnit) const
Definition: tm.cpp:645
void SaveTxt(TOLx &Lx) const
Definition: tm.cpp:949
bool operator==(const TSecTm &SecTm) const
Definition: tm.h:113
Definition: tm.h:13
int GetTime() const
Definition: tm.h:364
int GetTimers() const
Definition: tm.h:411
static const int OctN
Definition: tm.h:57
TStr GetTmMinStr() const
Definition: tm.cpp:525
static const int JulN
Definition: tm.h:56
static uint GetDateTimeInt(const int &Year=0, const int &Month=0, const int &Day=1, const int &Hour=0, const int &Min=0, const int &Sec=0)
Definition: tm.cpp:1231
bool RunningP
Definition: tm.h:381
static uint64 GetDiffMSecs(const TTm &Tm1, const TTm &Tm2)
Definition: tm.cpp:1102
TSecTm & AddWeeks(const int &Weeks)
Definition: tm.h:171
static TTm GetTmFromDateTimeInt(const uint &DateTimeInt)
Definition: tm.cpp:1255
void StopTimer(const int &TimerId)
Definition: tm.h:419
static TTm GetTmFromWebLogDateTimeStr(const TStr &DateTimeStr, const char DateSepCh='-', const char TimeSepCh=':', const char MSecSepCh='.', const char DateTimeSepCh=' ')
Definition: tm.cpp:1154
~TTm()
Definition: tm.h:232
int MxMSecs
Definition: tm.h:434
TInt Sec
Definition: tm.h:215
bool IsTimeDef() const
Definition: tm.h:271
TStr GetDtTmSortFNmStr() const
Definition: tm.cpp:545
int GetHour() const
Definition: tm.h:280
int GetMonthN() const
Definition: tm.cpp:561
TInt Min
Definition: tm.h:215
static TSecTm GetDtTmFromDmyStr(const TStr &DmyStr)
Definition: tm.cpp:761
TStr GetIdStr() const
Definition: tm.cpp:991
Definition: tm.h:12
Definition: tm.h:12
bool operator<(const TTm &Tm) const
Definition: tm.h:248
static TSecTm GetSecTmFromDateTimeInt(const uint &DateTimeInt)
Definition: tm.cpp:1260
Definition: tm.h:21
Definition: tm.h:13
TTmTimer(const int &_MxMSecs)
Definition: tm.h:439
TSecTm & SubDays(const int &Days)
Definition: tm.h:169
static const int NovN
Definition: tm.h:58
Definition: fl.h:58
void Save(TSOut &SOut) const
Definition: tm.h:103
Definition: tm.h:14
bool operator<(const TSecTm &SecTm) const
Definition: tm.h:115
static const int AprN
Definition: tm.h:54
static TStr GetDayOfWeekNm(const int &DayOfWeekN, const TLoc &Loc=lUs)
Definition: tm.cpp:71
static TSecTm GetDtTmFromMdyStr(const TStr &MdyStr)
Definition: tm.cpp:733
Definition: bd.h:63
static const int ThuN
Definition: tm.h:49
#define ClassTP(TNm, PNm)
Definition: bd.h:126
TSecTm()
Definition: tm.h:92
const char * GetTmStr() const
Definition: tm.h:369
UndefDefaultCopyAssign(TTmTimer)
static bool InitP
Definition: tm.h:23
TSecTm(TSIn &SIn)
Definition: tm.h:101
void Save(TSOut &SOut) const
Definition: dt.h:1160
int GetYear() const
Definition: tm.h:274
static uint GetYearIntFromTm(const TTm &Tm)
Definition: tm.cpp:1245
TSecTm & operator+=(const uint &Secs)
Definition: tm.h:109
TSecTm & operator=(const TSecTm &SecTm)
Definition: tm.h:105
static bool GetTmSec(const int &YearN, const int &MonthN, const int &DayN, const int &HourN, const int &MinN, const int &SecN, uint &AbsSec)
Definition: tm.cpp:363
void Stop()
Definition: tm.h:387
static TSecTm GetCurDtTm()
Definition: tm.h:189
TInt Hour
Definition: tm.h:215
static TTm GetTmFromIdStr(const TStr &IdStr)
Definition: tm.cpp:1210
TVec< TTm > TTmV
Definition: tm.h:346
TExeTm & operator=(const TExeTm &Tm)
Definition: tm.h:360
int GetTimerId(const TStr &TimerNm) const
Definition: tm.h:409
static const int MayN
Definition: tm.h:55
TTm()
Definition: tm.h:217
TSecTm & operator-=(const uint &Secs)
Definition: tm.h:111
TInt Month
Definition: tm.h:214
unsigned long long uint64
Definition: bd.h:38
TLoc
Definition: bd.h:63
int GetDay() const
Definition: tm.h:277
int GetTimerIdFFirst() const
Definition: tm.h:412
Definition: lx.h:129
TSecTm(const uint &_AbsSecs)
Definition: tm.h:93
TSecTm & operator=(const uint &_AbsSecs)
Definition: tm.h:107
TKeyDat< TSecTm, TStr > TSecTmStrKd
Definition: tm.h:207
uint GetAbsSecs() const
Definition: tm.h:149
int GetSecInt()
Definition: tm.h:366
int GetSecN() const
Definition: tm.cpp:603
Definition: lx.h:251
static const int SepN
Definition: tm.h:57
TTm(const TTm &Tm)
Definition: tm.h:220
int GetHourN() const
Definition: tm.cpp:591
bool IsDef() const
Definition: tm.h:264
int GetDayN() const
Definition: tm.cpp:573
Definition: tm.h:432
static uint GetMSecsFromOsStart()
Definition: tm.cpp:1075
void Load(TSIn &SIn)
Definition: dt.h:1159
static TStrV UsDayOfWeekNmV
Definition: tm.h:26
TSecTm GetSecTm() const
Definition: tm.h:294
static time_t MkGmTime(struct tm *t)
Definition: tm.cpp:380
int GetMemUsed() const
Definition: tm.h:117
Definition: tm.h:14
static uint64 GetDiffHrs(const TTm &Tm1, const TTm &Tm2)
Definition: tm.h:322
static uint64 GetPerfTimerTicks()
Definition: tm.cpp:1083
static TTm GetCurLocTm()
Definition: tm.cpp:1055
static uint64 GetDiffSecs(const TTm &Tm1, const TTm &Tm2)
Definition: tm.h:318
void Tick()
Definition: tm.h:363
static const int DecN
Definition: tm.h:58
TStr GetDayOfWeekNm(const TLoc &Loc=lUs) const
Definition: tm.cpp:585
int GetMemUsed() const
Definition: dt.h:1180
TInt Year
Definition: tm.h:214
TTm(const TSecTm &SecTm)
Definition: tm.h:228
Definition: fl.h:128
TVec< TTmStrPr > TTmStrPrV
Definition: tm.h:349
Definition: tm.h:212
void StopTimer(const TStr &TimerNm)
Definition: tm.h:418
TSecTm(const TSecTm &SecTm)
Definition: tm.h:95
void StartTimer(const TStr &TimerNm)
Definition: tm.h:415
TVec< TSecTm > TSecTmV
Definition: tm.h:206
static int Round(const double &Flt)
Definition: dt.h:1337
Definition: dt.h:1042
static uint64 GetWeekMSecs()
Definition: tm.h:64
TTm(TSIn &SIn)
Definition: tm.h:233
TSecTm & AddSecs(const int &Secs)
Definition: tm.h:155
Definition: dt.h:201
TTm & operator=(const TTm &Tm)
Definition: tm.h:240
Definition: dt.h:1147
static TStr GetMonthNm(const int &MonthN, const TLoc &Loc=lUs)
Definition: tm.cpp:50
TUInt AbsSecs
Definition: tm.h:83
static TSecTm GetZeroWeekTm()
Definition: tm.cpp:685
Definition: tm.h:81
static TSecTm GetDtTm(const int &YearN, const int &MonthN, const int &DayN)
Definition: tm.cpp:933
Definition: ds.h:32
static TStrV SiMonthNmV
Definition: tm.h:25
Definition: tm.h:12
static TStr GetTmZoneDiffStr(const TStr &TmZoneStr)
Definition: tm.cpp:131
static TSecTm LoadTxt(TILx &Lx)
Definition: tm.cpp:945
TVec< TSecTmStrKd > TSecTmStrKdV
Definition: tm.h:208
static PTmProfiler New()
Definition: tm.h:406
TStr GetTimerNm(const int &TimerId) const
Definition: tm.h:410
static TStr GetTmUnitStr(const TTmUnit &TmUnit)
Definition: tm.cpp:108
int GetSec() const
Definition: tm.h:282
TStr GetDayOfWeekNm() const
Definition: tm.h:279
TStr GetDtTmSortStr() const
Definition: tm.cpp:535
static uint GetMonthIntFromTm(const TTm &Tm)
Definition: tm.cpp:1241
TStr GetMonthNm(const TLoc &Loc=lUs) const
Definition: tm.cpp:567
Definition: dt.h:412
static TTm GetUniqueCurUniTm()
Definition: tm.cpp:1028
static TTm GetTmFromWebLogTimeStr(const TStr &TimeStr, const char TimeSepCh=':', const char MSecSepCh='.')
Definition: tm.cpp:1120
TStr GetStr(const TLoc &Loc=lUs) const
Definition: tm.cpp:457
static const int FriN
Definition: tm.h:49
static bool IsMonthNm(const TStr &MonthNm, const TLoc &Loc=lUs)
Definition: tm.h:34
static const int WedN
Definition: tm.h:48
Definition: hash.h:88
static int GetMonthN(const TStr &MonthNm, const TLoc &Loc=lUs)
Definition: tm.cpp:39
int TmSoFar
Definition: tm.h:380
TStr GetDtStr(const TLoc &Loc=lUs) const
Definition: tm.cpp:484
static const int AugN
Definition: tm.h:56
void AddDays(const int &Days)
Definition: tm.h:299
double GetSecs() const
Definition: tm.h:365
void ResetTimer(const TStr &TimerNm)
Definition: tm.h:422
TStr GetHMSTColonDotStr(const bool &FullP=false, const bool &MSecP=true) const
Definition: tm.cpp:978
int GetSecInt() const
Definition: tm.h:392
static TSecTm GetCurTm()
Definition: tm.cpp:692
int GetDayOfWeek() const
Definition: tm.h:278
TStr GetTmStr() const
Definition: tm.cpp:515
static TTm GetTmFromMSecs(const uint64 &MSecs)
Definition: tm.cpp:1071
TStr GetWebLogTimeStr() const
Definition: tm.h:290
int GetSecHashCd() const
Definition: dt.h:1183
Definition: bd.h:196
static uint GetDSecs(const TSecTm &SecTm1, const TSecTm &SecTm2)
Definition: tm.cpp:678
uint Val
Definition: dt.h:1149
void AddTime(const int &Hours, const int &Mins=0, const int &Secs=0, const int &MSecs=0)
Definition: tm.cpp:1004
TVec< TStrTmPr > TStrTmPrV
Definition: tm.h:350
Definition: tm.h:12
TStr GetMonthNm() const
Definition: tm.h:276
static TSecTm GetDtTmFromMdyHmsPmStr(const TStr &MdyHmsPmStr, const char &DateSepCh='/', const char &TimeSepCh=':')
Definition: tm.cpp:795
Definition: tm.h:13
TInt DayOfWeek
Definition: tm.h:214
static int GetDayOfWeekN(const TStr &DayOfWeekNm, const TLoc &Loc=lUs)
Definition: tm.cpp:60
int GetPrimHashCd() const
Definition: tm.h:260
static uint64 GetDiffDays(const TTm &Tm1, const TTm &Tm2)
Definition: tm.h:324
TStr GetDayPart() const
Definition: tm.cpp:669
TTmStopWatch StopWatch
Definition: tm.h:435
static const int SunN
Definition: tm.h:47
static uint64 GetPerfTimerFq()
Definition: tm.cpp:1079
const char * GetStr() const
Definition: tm.h:367
TSecTm & SubHours(const int &Hours)
Definition: tm.h:165
char * CStr()
Definition: dt.h:476
TTmUnit
Definition: tm.h:11
void ResetTimer(const int &TimerId)
Definition: tm.h:423
int GetPrimHashCd() const
Definition: dt.h:1182
TStr GetYmdTmStr() const
Definition: tm.cpp:508
TSecTm & SubWeeks(const int &Weeks)
Definition: tm.h:173
TPair< TStr, TTm > TStrTmPr
Definition: tm.h:348
static const int MonN
Definition: tm.h:47
TStr GetStr(const bool &MSecP=true) const
Definition: tm.cpp:956
TSecTm & AddHours(const int &Hours)
Definition: tm.h:163
int GetSecHashCd() const
Definition: tm.h:261
double GetSec() const
Definition: tm.h:391
static uint64 GetMSecsFromTm(const TTm &Tm)
Definition: tm.cpp:1067
void SubTime(const int &Hours, const int &Mins=0, const int &Secs=0, const int &MSecs=0)
Definition: tm.cpp:1014
void Undef()
Definition: tm.h:267
static TStr GetHmFromMins(const int &Mins)
Definition: tm.cpp:81
static const int FebN
Definition: tm.h:53
void Undef()
Definition: tm.h:124
static const int MarN
Definition: tm.h:54
static const int TueN
Definition: tm.h:48
TStr GetDtMdyStr() const
Definition: tm.cpp:496
int GetPrimHashCd() const
Definition: tm.h:119
static const int JunN
Definition: tm.h:55
static uint64 GetMinMSecs()
Definition: tm.h:61
static int LastJulianDateN
Definition: tm.h:72
static TTm GetLocTmFromUniTm(const TTm &Tm)
Definition: tm.cpp:1112
Definition: tm.h:14
TSecTm Round(const TTmUnit &TmUnit) const
Definition: tm.cpp:620
Definition: tm.h:13
static bool GetTmStruct(const uint &AbsSec, struct tm &Tm)
Definition: tm.cpp:416
static const int SatN
Definition: tm.h:50
static TSecTm GetZeroTm()
Definition: tm.h:186
void Reset(const bool &Start)
Definition: tm.h:388
void StartTimer(const int &TimerId)
Definition: tm.h:416