soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
STime.h
1#ifndef STime_h__
2#define STime_h__
3
4#include <time.h>
5
6SNSBEGIN
7
8/**
9 * @class STimeSpan
10 * @brief 时间间隔类
11 */
12class SOUI_EXP STimeSpan {
13 public:
14 /**
15 * @brief 默认构造函数
16 */
17 STimeSpan();
18
19 /**
20 * @brief 构造函数,从时间间隔秒数初始化
21 * @param time 时间间隔秒数
22 */
23 STimeSpan(__time64_t time);
24
25 /**
26 * @brief 构造函数,从天、小时、分钟、秒初始化
27 * @param lDays 天数
28 * @param nHours 小时数
29 * @param nMins 分钟数
30 * @param nSecs 秒数
31 */
32 STimeSpan(LONG lDays, int nHours, int nMins, int nSecs);
33
34 /**
35 * @brief 获取天数
36 * @return 天数
37 */
38 LONGLONG GetDays() const;
39
40 /**
41 * @brief 获取总小时数
42 * @return 总小时数
43 */
44 LONGLONG GetTotalHours() const;
45
46 /**
47 * @brief 获取小时数
48 * @return 小时数
49 */
50 LONG GetHours() const;
51
52 /**
53 * @brief 获取总分钟数
54 * @return 总分钟数
55 */
56 LONGLONG GetTotalMinutes() const;
57
58 /**
59 * @brief 获取分钟数
60 * @return 分钟数
61 */
62 LONG GetMinutes() const;
63
64 /**
65 * @brief 获取总秒数
66 * @return 总秒数
67 */
68 LONGLONG GetTotalSeconds() const;
69
70 /**
71 * @brief 获取秒数
72 * @return 秒数
73 */
74 LONG GetSeconds() const;
75
76 /**
77 * @brief 获取时间间隔秒数
78 * @return 时间间隔秒数
79 */
80 __time64_t GetTimeSpan() const;
81
82 /**
83 * @brief 加法运算符重载
84 * @param span 时间间隔对象
85 * @return 新的时间间隔对象
86 */
87 STimeSpan operator+(STimeSpan span) const;
88
89 /**
90 * @brief 减法运算符重载
91 * @param span 时间间隔对象
92 * @return 新的时间间隔对象
93 */
94 STimeSpan operator-(STimeSpan span) const;
95
96 /**
97 * @brief 加法赋值运算符重载
98 * @param span 时间间隔对象
99 * @return 当前时间间隔对象的引用
100 */
102
103 /**
104 * @brief 减法赋值运算符重载
105 * @param span 时间间隔对象
106 * @return 当前时间间隔对象的引用
107 */
109
110 /**
111 * @brief 等于运算符重载
112 * @param span 时间间隔对象
113 * @return 如果相等返回true,否则返回false
114 */
115 bool operator==(STimeSpan span) const;
116
117 /**
118 * @brief 不等于运算符重载
119 * @param span 时间间隔对象
120 * @return 如果不相等返回true,否则返回false
121 */
122 bool operator!=(STimeSpan span) const;
123
124 /**
125 * @brief 小于运算符重载
126 * @param span 时间间隔对象
127 * @return 如果小于返回true,否则返回false
128 */
129 bool operator<(STimeSpan span) const;
130
131 /**
132 * @brief 大于运算符重载
133 * @param span 时间间隔对象
134 * @return 如果大于返回true,否则返回false
135 */
136 bool operator>(STimeSpan span) const;
137
138 /**
139 * @brief 小于等于运算符重载
140 * @param span 时间间隔对象
141 * @return 如果小于等于返回true,否则返回false
142 */
143 bool operator<=(STimeSpan span) const;
144
145 /**
146 * @brief 大于等于运算符重载
147 * @param span 时间间隔对象
148 * @return 如果大于等于返回true,否则返回false
149 */
150 bool operator>=(STimeSpan span) const;
151
152 private:
153 __time64_t m_timeSpan; // 时间间隔秒数
154};
155
156/**
157 * @class STime
158 * @brief 时间类
159 */
160class SOUI_EXP STime {
161 public:
162 /**
163 * @brief 获取当前时间
164 * @return 当前时间对象
165 */
166 static STime GetCurrentTime();
167
168 /**
169 * @brief 获取当前时间的毫秒数
170 * @return 当前时间的毫秒数
171 */
172 static uint64_t GetCurrentTimeMs();
173
174 /**
175 * @brief 默认构造函数
176 * @param tm 时间秒数(默认为0)
177 */
178 STime(__time64_t tm = 0)
179 : m_time(tm)
180 {
181 }
182
183 /**
184 * @brief 构造函数,从年、月、日、时、分、秒初始化
185 * @param nYear 年份
186 * @param nMonth 月份
187 * @param nDay 日
188 * @param nHour 小时
189 * @param nMin 分钟
190 * @param nSec 秒
191 * @param nDST 夏令时标志(默认为-1,表示自动检测)
192 */
193 STime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1);
194
195 /**
196 * @brief 设置日期
197 * @param nYear 年份
198 * @param nMonth 月份
199 * @param nDay 日
200 */
201 void SetDate(int nYear, int nMonth, int nDay);
202
203 /**
204 * @brief 设置日期和时间
205 * @param nYear 年份
206 * @param nMonth 月份
207 * @param nDay 日
208 * @param nHour 小时
209 * @param nMin 分钟
210 * @param nSec 秒
211 * @param nDST 夏令时标志(默认为-1,表示自动检测)
212 */
213 void SetDateTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1);
214
215 /**
216 * @brief 获取时间秒数
217 * @return 时间秒数
218 */
219 __time64_t GetTime() const;
220
221 /**
222 * @brief 获取本地时间结构
223 * @param ptm 本地时间结构指针
224 * @return 本地时间结构指针
225 */
226 struct tm *GetLocalTm(struct tm *ptm) const;
227
228 /**
229 * @brief 获取系统时间结构
230 * @param timeDest 系统时间结构引用
231 * @return 如果成功返回true,否则返回false
232 */
233 bool GetAsSystemTime(SYSTEMTIME &timeDest) const;
234
235 /**
236 * @brief 获取年份
237 * @return 年份
238 */
239 int GetYear() const;
240
241 /**
242 * @brief 获取月份
243 * @return 月份
244 */
245 int GetMonth() const;
246
247 /**
248 * @brief 获取日
249 * @return 日
250 */
251 int GetDay() const;
252
253 /**
254 * @brief 获取小时
255 * @return 小时
256 */
257 int GetHour() const;
258
259 /**
260 * @brief 获取分钟
261 * @return 分钟
262 */
263 int GetMinute() const;
264
265 /**
266 * @brief 获取秒
267 * @return 秒
268 */
269 int GetSecond() const;
270
271 /**
272 * @brief 获取星期几
273 * @return 星期几(0=星期日,1=星期一,...,6=星期六)
274 */
275 int GetDayOfWeek() const;
276
277 /**
278 * @brief 格式化时间字符串
279 * @param pszFormat 格式字符串
280 * @return 格式化后的时间字符串
281 */
282 SStringT Format(LPCTSTR pszFormat) const;
283
284 /**
285 * @brief 赋值运算符重载
286 * @param time 时间秒数
287 * @return 当前时间对象的引用
288 */
289 STime &operator=(__time64_t time);
290
291 /**
292 * @brief 加法赋值运算符重载
293 * @param span 时间间隔对象
294 * @return 当前时间对象的引用
295 */
296 STime &operator+=(STimeSpan span);
297
298 /**
299 * @brief 减法赋值运算符重载
300 * @param span 时间间隔对象
301 * @return 当前时间对象的引用
302 */
303 STime &operator-=(STimeSpan span);
304
305 /**
306 * @brief 减法运算符重载
307 * @param time 时间对象
308 * @return 时间间隔对象
309 */
310 STimeSpan operator-(STime time) const;
311
312 /**
313 * @brief 减法运算符重载
314 * @param span 时间间隔对象
315 * @return 新的时间对象
316 */
317 STime operator-(STimeSpan span) const;
318
319 /**
320 * @brief 加法运算符重载
321 * @param span 时间间隔对象
322 * @return 新的时间对象
323 */
324 STime operator+(STimeSpan span) const;
325
326 /**
327 * @brief 等于运算符重载
328 * @param time 时间对象
329 * @return 如果相等返回true,否则返回false
330 */
331 bool operator==(STime time) const;
332
333 /**
334 * @brief 不等于运算符重载
335 * @param time 时间对象
336 * @return 如果不相等返回true,否则返回false
337 */
338 bool operator!=(STime time) const;
339
340 /**
341 * @brief 小于运算符重载
342 * @param time 时间对象
343 * @return 如果小于返回true,否则返回false
344 */
345 bool operator<(STime time) const;
346
347 /**
348 * @brief 大于运算符重载
349 * @param time 时间对象
350 * @return 如果大于返回true,否则返回false
351 */
352 bool operator>(STime time) const;
353
354 /**
355 * @brief 小于等于运算符重载
356 * @param time 时间对象
357 * @return 如果小于等于返回true,否则返回false
358 */
359 bool operator<=(STime time) const;
360
361 /**
362 * @brief 大于等于运算符重载
363 * @param time 时间对象
364 * @return 如果大于等于返回true,否则返回false
365 */
366 bool operator>=(STime time) const;
367
368 protected:
369 time_t m_time; // 时间秒数
370};
371
372SNSEND
373
374#endif // STime_h__
时间类
Definition STime.h:160
static STime GetCurrentTime()
获取当前时间
Definition stime.cpp:184
static uint64_t GetCurrentTimeMs()
获取当前时间的毫秒数
Definition stime.cpp:189
STime(__time64_t tm=0)
默认构造函数
Definition STime.h:178
时间间隔类
Definition STime.h:12
bool operator!=(STimeSpan span) const
不等于运算符重载
Definition stime.cpp:89
STimeSpan()
默认构造函数
Definition stime.cpp:7
LONGLONG GetTotalMinutes() const
获取总分钟数
Definition stime.cpp:37
LONGLONG GetDays() const
获取天数
Definition stime.cpp:22
LONG GetSeconds() const
获取秒数
Definition stime.cpp:52
bool operator<(STimeSpan span) const
小于运算符重载
Definition stime.cpp:94
LONGLONG GetTotalHours() const
获取总小时数
Definition stime.cpp:27
STimeSpan & operator-=(STimeSpan span)
减法赋值运算符重载
Definition stime.cpp:78
STimeSpan operator-(STimeSpan span) const
减法运算符重载
Definition stime.cpp:67
LONG GetMinutes() const
获取分钟数
Definition stime.cpp:42
bool operator>(STimeSpan span) const
大于运算符重载
Definition stime.cpp:99
bool operator==(STimeSpan span) const
等于运算符重载
Definition stime.cpp:84
LONG GetHours() const
获取小时数
Definition stime.cpp:32
bool operator>=(STimeSpan span) const
大于等于运算符重载
Definition stime.cpp:109
bool operator<=(STimeSpan span) const
小于等于运算符重载
Definition stime.cpp:104
STimeSpan operator+(STimeSpan span) const
加法运算符重载
Definition stime.cpp:62
__time64_t GetTimeSpan() const
获取时间间隔秒数
Definition stime.cpp:57
STimeSpan & operator+=(STimeSpan span)
加法赋值运算符重载
Definition stime.cpp:72
LONGLONG GetTotalSeconds() const
获取总秒数
Definition stime.cpp:47