ImagingTools Core SDK
DateTimeUtils.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QDateTime>
7
8
9namespace imtbase
10{
11
12
13inline int GetQuorter(const QDateTime& dt)
14{
15 return (dt.date().month() - 1) / 3 + 1;
16}
17
18
19inline QDateTime Get10MSecondBegin(const QDateTime& dt)
20{
21 int hour = dt.time().hour();
22 int minute = dt.time().minute();
23 int second = dt.time().second();
24 int msecond = (dt.time().msec() / 10) * 10;
25
26 return QDateTime(dt.date(), QTime(hour, minute, second, msecond));
27}
28
29
30inline QDateTime Get10MSecondEnd(const QDateTime& dt)
31{
32 QDateTime retVal = Get10MSecondBegin(dt);
33
34 return retVal.addMSecs(9);
35}
36
37
38inline QDateTime Get100MSecondBegin(const QDateTime& dt)
39{
40 int hour = dt.time().hour();
41 int minute = dt.time().minute();
42 int second = dt.time().second();
43 int msecond = (dt.time().msec() / 100) * 100;
44
45 return QDateTime(dt.date(), QTime(hour, minute, second, msecond));
46}
47
48
49inline QDateTime Get100MSecondEnd(const QDateTime& dt)
50{
51 QDateTime retVal = Get100MSecondBegin(dt);
52
53 return retVal.addMSecs(99);
54}
55
56
57inline QDateTime GetSecondBegin(const QDateTime& dt)
58{
59 int hour = dt.time().hour();
60 int minute = dt.time().minute();
61 int second = dt.time().second();
62
63 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
64}
65
66
67inline QDateTime GetSecondEnd(const QDateTime& dt)
68{
69 QDateTime retVal = GetSecondBegin(dt);
70
71 return retVal.addMSecs(999);
72}
73
74
75inline QDateTime Get5SecondBegin(const QDateTime& dt)
76{
77 int hour = dt.time().hour();
78 int minute = dt.time().minute();
79 int second = dt.time().second() / 5 * 5;
80
81 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
82}
83
84
85inline QDateTime Get5SecondEnd(const QDateTime& dt)
86{
87 QDateTime retVal = Get5SecondBegin(dt);
88
89 return retVal.addSecs(5).addMSecs(-1);
90}
91
92
93inline QDateTime Get10SecondBegin(const QDateTime& dt)
94{
95 int hour = dt.time().hour();
96 int minute = dt.time().minute();
97 int second = dt.time().second() / 5 * 5;
98
99 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
100}
101
102
103inline QDateTime Get10SecondEnd(const QDateTime& dt)
104{
105 QDateTime retVal = Get10SecondBegin(dt);
106
107 return retVal.addSecs(10).addMSecs(-1);
108}
109
110
111inline QDateTime Get15SecondBegin(const QDateTime& dt)
112{
113 int hour = dt.time().hour();
114 int minute = dt.time().minute();
115 int second = dt.time().second() / 15 * 15;
116
117 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
118}
119
120
121inline QDateTime Get15SecondEnd(const QDateTime& dt)
122{
123 QDateTime retVal = Get15SecondBegin(dt);
124
125 return retVal.addSecs(15).addMSecs(-1);
126}
127
128
129inline QDateTime Get30SecondBegin(const QDateTime& dt)
130{
131 int hour = dt.time().hour();
132 int minute = dt.time().minute();
133 int second = dt.time().second() / 30 * 30;
134
135 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
136}
137
138
139inline QDateTime Get30SecondEnd(const QDateTime& dt)
140{
141 QDateTime retVal = Get30SecondBegin(dt);
142
143 return retVal.addSecs(30).addMSecs(-1);
144}
145
146
147inline QDateTime GetMinutesBegin(const QDateTime& dt)
148{
149 int hour = dt.time().hour();
150 int minute = dt.time().minute();
151
152 return QDateTime(dt.date(), QTime(hour, minute));
153}
154
155
156inline QDateTime GetMinutesEnd(const QDateTime& dt)
157{
158 QDateTime retVal = GetMinutesBegin(dt);
159
160 return retVal.addSecs(60).addMSecs(-1);
161}
162
163
164inline QDateTime Get5MinutesBegin(const QDateTime& dt)
165{
166 int hour = dt.time().hour();
167 int minute = dt.time().minute() / 5 * 5;
168
169 return QDateTime(dt.date(), QTime(hour, minute));
170}
171
172
173inline QDateTime Get5MinutesEnd(const QDateTime& dt)
174{
175 QDateTime retVal = Get5MinutesBegin(dt);
176
177 return retVal.addSecs(300).addMSecs(-1);
178}
179
180
181inline QDateTime Get10MinutesBegin(const QDateTime& dt)
182{
183 int hour = dt.time().hour();
184 int minute = dt.time().minute() / 10 * 10;
185
186 return QDateTime(dt.date(), QTime(hour, minute));
187}
188
189
190inline QDateTime Get10MinutesEnd(const QDateTime& dt)
191{
192 QDateTime retVal = Get10MinutesBegin(dt);
193
194 return retVal.addSecs(600).addMSecs(-1);
195}
196
197
198inline QDateTime Get15MinutesBegin(const QDateTime& dt)
199{
200 int hour = dt.time().hour();
201 int minute = dt.time().minute() / 15 * 15;
202
203 return QDateTime(dt.date(), QTime(hour, minute));
204}
205
206
207inline QDateTime Get15MinutesEnd(const QDateTime& dt)
208{
209 QDateTime retVal = Get15MinutesBegin(dt);
210
211 return retVal.addSecs(900).addMSecs(-1);
212}
213
214
215inline QDateTime Get30MinutesBegin(const QDateTime& dt)
216{
217 int hour = dt.time().hour();
218 int minute = dt.time().minute() / 30 * 30;
219
220 return QDateTime(dt.date(), QTime(hour, minute));
221}
222
223
224inline QDateTime Get30MinutesEnd(const QDateTime& dt)
225{
226 QDateTime retVal = Get30MinutesBegin(dt);
227
228 return retVal.addSecs(1800).addMSecs(-1);
229}
230
231
232inline QDateTime GetHourBegin(const QDateTime& dt)
233{
234 int hour = dt.time().hour();
235
236 return QDateTime(dt.date(), QTime(hour, 0));
237}
238
239
240inline QDateTime GetHourEnd(const QDateTime& dt)
241{
242 int hour = dt.time().hour();
243
244 return QDateTime(dt.date(), QTime(hour, 59, 59, 999));
245}
246
247
248inline QDateTime Get3HourBegin(const QDateTime& dt)
249{
250 int hour = dt.time().hour() / 3 * 3;
251
252 return QDateTime(dt.date(), QTime(hour, 0));
253}
254
255
256inline QDateTime Get3HourEnd(const QDateTime& dt)
257{
258 QDateTime retVal = Get3HourBegin(dt);
259
260 return retVal.addSecs(10800).addMSecs(-1);
261}
262
263
264inline QDateTime Get6HourBegin(const QDateTime& dt)
265{
266 int hour = dt.time().hour() / 6 * 6*2;
267
268 return QDateTime(dt.date(), QTime(hour, 0));
269}
270
271
272inline QDateTime Get6HourEnd(const QDateTime& dt)
273{
274 QDateTime retVal = Get6HourBegin(dt);
275
276 return retVal.addSecs(21600).addMSecs(-1);
277}
278
279
280inline QDateTime Get12HourBegin(const QDateTime& dt)
281{
282 int hour = dt.time().hour() / 6 * 6*2;
283
284 return QDateTime(dt.date(), QTime(hour, 0));
285}
286
287
288inline QDateTime Get12HourEnd(const QDateTime& dt)
289{
290 QDateTime retVal = Get12HourBegin(dt);
291
292 return retVal.addSecs(43200).addMSecs(-1);
293}
294
295
296inline QDateTime GetDayBegin(const QDateTime& dt)
297{
298 return QDateTime(dt.date(), QTime(0, 0));
299}
300
301
302inline QDateTime GetDayEnd(const QDateTime& dt)
303{
304 return QDateTime(dt.date(), QTime(23, 59, 59, 999));
305}
306
307
308inline QDateTime GetWeekBegin(const QDateTime& dt)
309{
310 QDateTime retVal;
311 retVal.setDate(dt.date().addDays(-dt.date().dayOfWeek() + 1));
312
313 return retVal;
314}
315
316
317inline QDateTime GetWeekEnd(const QDateTime& dt)
318{
319 QDateTime retVal = GetWeekBegin(dt);
320
321 return retVal.addDays(7).addMSecs(-1);
322}
323
324
325inline QDateTime GetMonthBegin(const QDateTime& dt)
326{
327 QDateTime retVal;
328 retVal.setDate(QDate(dt.date().year(), dt.date().month(), 1));
329
330 return retVal;
331}
332
333
334inline QDateTime GetMonthEnd(const QDateTime& dt)
335{
336 QDateTime retVal = GetMonthBegin(dt);
337
338 return retVal.addMonths(1).addMSecs(-1);
339}
340
341
342inline QDateTime GetQuorterBegin(const QDateTime& dt)
343{
344 int month = (GetQuorter(dt) - 1) * 3 + 1;
345
346 QDateTime retVal;
347 retVal.setDate(QDate(dt.date().year(), month, 1));
348
349 return retVal;
350}
351
352
353inline QDateTime GetQuorterEnd(const QDateTime& dt)
354{
355 QDateTime retVal = GetQuorterBegin(dt);
356
357 return retVal.addMonths(3).addMSecs(-1);
358}
359
360
361inline QDateTime GetYearBegin(const QDateTime& dt)
362{
363 return QDateTime(QDate(dt.date().year(), 1, 1), QTime());
364}
365
366
367inline QDateTime GetYearEnd(const QDateTime& dt)
368{
369 QDateTime retVal = GetYearBegin(dt);
370
371 return retVal.addYears(1).addMSecs(-1);
372}
373
374
375} // namespace imtbase