Panda3D
 All Classes Functions Variables Enumerations
time_general.h
1 #ifndef __TIME_GENERAL_H__
2 #define __TIME_GENERAL_H__
3 
4 
5 Time_Span TimeDifference(const Time_Clock &time1, const Time_Clock &time2);
6 Time_Clock TimeDifference( const Time_Clock &time1, const Time_Span &Time_Span);
7 Time_Clock TimeAddition(const Time_Clock &time1, Time_Span &Time_Span);
8 
9 
10 Time_Clock operator+(const Time_Clock &tm, const Time_Span &ts);
11 Time_Clock operator-(const Time_Clock &tm, const Time_Span &ts);
12 
13 
14 bool SetFromTimeStr(const char * str, Time_Clock & outtime);
15 std::string GetTimeStr(const Time_Clock & intime);
16 
17 //////////////////////////////////////////////////////////////
18 // Function name : TimeDifference
19 // Description :
20 // Return type : inline Time_Span
21 // Argument : const Time_Clock &time1
22 // Argument : const Time_Clock &time2
23 //////////////////////////////////////////////////////////////
24 inline Time_Span TimeDifference(const Time_Clock &time1, const Time_Clock &time2)
25 {
26  timeval ans;
27  TimeDif(time2.GetTval(), time1.GetTval(), ans);
28  return Time_Span(ans);
29 }
30 //////////////////////////////////////////////////////////////
31 // Function name : TimeDifference
32 // Description :
33 // Return type :
34 // Argument : const Time_Clock &time1
35 // Argument : const Time_Span &Time_Span
36 //////////////////////////////////////////////////////////////
37 inline Time_Clock TimeDifference( const Time_Clock &time1, const Time_Span &Time_Span)
38 {
39  timeval ans;
40  TimeDif(Time_Span.GetTval(), time1.GetTval(), ans);
41  return Time_Clock(ans);
42 }
43 //////////////////////////////////////////////////////////////
44 // Function name : TimeAddition
45 // Description :
46 // Return type :
47 // Argument : const Time_Clock &time1
48 // Argument : Time_Span &Time_Span
49 //////////////////////////////////////////////////////////////
50 inline Time_Clock TimeAddition(const Time_Clock &time1, Time_Span &Time_Span)
51 {
52  timeval ans;
53  TimeAdd(time1.GetTval(), Time_Span.GetTval(), ans);
54  return Time_Clock(ans);
55 }
56 //////////////////////////////////////////////////////////////
57 // Function name : Time_Clock& Time_Clock::operator+=
58 // Description :
59 // Return type : inline const
60 // Argument : Time_Span &Time_Span
61 //////////////////////////////////////////////////////////////
62 inline const Time_Clock& Time_Clock::operator+=(const Time_Span &Time_Span)
63 {
64  _my_time.tv_usec += Time_Span._my_time.tv_usec;
65  _my_time.tv_sec += Time_Span._my_time.tv_sec;
66  NormalizeTime(_my_time);
67  return *this;
68 }
69 //////////////////////////////////////////////////////////////
70 // Function name : operator+
71 // Description :
72 // Return type : inline Time_Clock
73 // Argument : const Time_Clock &tm
74 // Argument : const Time_Span &ts
75 //////////////////////////////////////////////////////////////
76 inline Time_Clock operator+(const Time_Clock &tm, const Time_Span &ts)
77 {
78  Time_Clock work(tm);
79  work += ts;
80  return work;
81 }
82 //////////////////////////////////////////////////////////////
83 // Function name : operator-
84 // Description :
85 // Return type : inline Time_Clock
86 // Argument : const Time_Clock &tm
87 // Argument : const Time_Span &ts
88 //////////////////////////////////////////////////////////////
89 inline Time_Clock operator-(const Time_Clock &tm, const Time_Span &ts)
90 {
91  return TimeDifference(tm, ts);
92 }
93 //////////////////////////////////////////////////////////////
94 // Function name : Time_Clock& Time_Clock::operator-=
95 // Description :
96 // Return type : inline const
97 // Argument : Time_Span &Time_Span
98 //////////////////////////////////////////////////////////////
99 inline const Time_Clock& Time_Clock::operator-=(const Time_Span &Time_Span)
100 {
101  _my_time.tv_usec -= Time_Span._my_time.tv_usec;
102  _my_time.tv_sec -= Time_Span._my_time.tv_sec;
103  NormalizeTime(_my_time);
104  return *this;
105 }
106 //////////////////////////////////////////////////////////////
107 // Function name : operator-
108 // Description :
109 // Return type : inline Time_Span
110 // Argument : const Time_Clock &tm1
111 // Argument : const Time_Clock &tm2
112 //////////////////////////////////////////////////////////////
113 inline Time_Span operator-(const Time_Clock &tm1, const Time_Clock &tm2)
114 {
115  return TimeDifference(tm1, tm2);
116 }
117 //////////////////////////////////////////////////////////////
118 // Function name : char * GetTimeStr
119 // Description :
120 // Return type : inline const
121 // Argument : const Time_Clock & intime
122 //////////////////////////////////////////////////////////////
123 inline std::string GetTimeStr(const Time_Clock & intime)
124 {
125  static std::string ts;
126  static Time_Clock prev_time;
127 
128  if (prev_time != intime || ts.empty())
129  {
130  ts = intime.Format("%Y-%m-%d %H:%M:%S");
131  prev_time = intime;
132  }
133  return ts;
134 }
135 //////////////////////////////////////////////////////////////
136 // Function name : GetTimeStr
137 // Description :
138 // Return type : inline std::string
139 // Argument : void
140 //////////////////////////////////////////////////////////////
141 inline std::string GetTimeStr()
142 {
143  return GetTimeStr(Time_Clock::GetCurrentTime());
144 }
145 //////////////////////////////////////////////////////////////
146 // Function name : SetFromTimeStr
147 // Description :
148 // Return type : inline bool
149 // Argument : const char * str
150 // Argument : Time_Clock & outtime
151 //////////////////////////////////////////////////////////////
152 inline bool SetFromTimeStr(const char * str, Time_Clock & outtime)
153 {
154  int year = 0;
155  int month = 0;
156  int day = 0;
157  int hour = 0;
158  int min = 0;
159  int sec = 0;
160 
161  if (sscanf(str, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec) != 6)
162  return false;
163 
164  outtime.Set(year, month, day, hour, min, sec);
165  return true;
166 }
167 
168 #endif //__TIME_GENERAL_H__
const Time_Clock & operator+=(const Time_Span &Time_Span)
Return type : inline const Argument : Time_Span &Time_Span.
Definition: time_general.h:62
const Time_Clock & operator-=(const Time_Span &Time_Span)
Return type : inline const Argument : Time_Span &Time_Span.
Definition: time_general.h:99
std::string Format(const char *pFormat) const
Used to allow access to the "C" library strftime functions.
Definition: time_clock.h:231
void Set(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, unsigned long microseconds=0, int nDST=-1)
Return type : inline Argument : int nYear Argument : int nMonth Argument : int nDay Argument : int nH...
Definition: time_clock.h:137
static Time_Clock GetCurrentTime()
The Default no param constructor.
Definition: time_clock.h:160