6#include <QtCore/QDateTime>
13inline int GetQuorter(
const QDateTime& dt)
15 return (dt.date().month() - 1) / 3 + 1;
19inline QDateTime Get10MSecondBegin(
const QDateTime& dt)
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;
26 return QDateTime(dt.date(), QTime(hour, minute, second, msecond));
30inline QDateTime Get10MSecondEnd(
const QDateTime& dt)
32 QDateTime retVal = Get10MSecondBegin(dt);
34 return retVal.addMSecs(9);
38inline QDateTime Get100MSecondBegin(
const QDateTime& dt)
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;
45 return QDateTime(dt.date(), QTime(hour, minute, second, msecond));
49inline QDateTime Get100MSecondEnd(
const QDateTime& dt)
51 QDateTime retVal = Get100MSecondBegin(dt);
53 return retVal.addMSecs(99);
57inline QDateTime GetSecondBegin(
const QDateTime& dt)
59 int hour = dt.time().hour();
60 int minute = dt.time().minute();
61 int second = dt.time().second();
63 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
67inline QDateTime GetSecondEnd(
const QDateTime& dt)
69 QDateTime retVal = GetSecondBegin(dt);
71 return retVal.addMSecs(999);
75inline QDateTime Get5SecondBegin(
const QDateTime& dt)
77 int hour = dt.time().hour();
78 int minute = dt.time().minute();
79 int second = dt.time().second() / 5 * 5;
81 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
85inline QDateTime Get5SecondEnd(
const QDateTime& dt)
87 QDateTime retVal = Get5SecondBegin(dt);
89 return retVal.addSecs(5).addMSecs(-1);
93inline QDateTime Get10SecondBegin(
const QDateTime& dt)
95 int hour = dt.time().hour();
96 int minute = dt.time().minute();
97 int second = dt.time().second() / 5 * 5;
99 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
103inline QDateTime Get10SecondEnd(
const QDateTime& dt)
105 QDateTime retVal = Get10SecondBegin(dt);
107 return retVal.addSecs(10).addMSecs(-1);
111inline QDateTime Get15SecondBegin(
const QDateTime& dt)
113 int hour = dt.time().hour();
114 int minute = dt.time().minute();
115 int second = dt.time().second() / 15 * 15;
117 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
121inline QDateTime Get15SecondEnd(
const QDateTime& dt)
123 QDateTime retVal = Get15SecondBegin(dt);
125 return retVal.addSecs(15).addMSecs(-1);
129inline QDateTime Get30SecondBegin(
const QDateTime& dt)
131 int hour = dt.time().hour();
132 int minute = dt.time().minute();
133 int second = dt.time().second() / 30 * 30;
135 return QDateTime(dt.date(), QTime(hour, minute, second, 0));
139inline QDateTime Get30SecondEnd(
const QDateTime& dt)
141 QDateTime retVal = Get30SecondBegin(dt);
143 return retVal.addSecs(30).addMSecs(-1);
147inline QDateTime GetMinutesBegin(
const QDateTime& dt)
149 int hour = dt.time().hour();
150 int minute = dt.time().minute();
152 return QDateTime(dt.date(), QTime(hour, minute));
156inline QDateTime GetMinutesEnd(
const QDateTime& dt)
158 QDateTime retVal = GetMinutesBegin(dt);
160 return retVal.addSecs(60).addMSecs(-1);
164inline QDateTime Get5MinutesBegin(
const QDateTime& dt)
166 int hour = dt.time().hour();
167 int minute = dt.time().minute() / 5 * 5;
169 return QDateTime(dt.date(), QTime(hour, minute));
173inline QDateTime Get5MinutesEnd(
const QDateTime& dt)
175 QDateTime retVal = Get5MinutesBegin(dt);
177 return retVal.addSecs(300).addMSecs(-1);
181inline QDateTime Get10MinutesBegin(
const QDateTime& dt)
183 int hour = dt.time().hour();
184 int minute = dt.time().minute() / 10 * 10;
186 return QDateTime(dt.date(), QTime(hour, minute));
190inline QDateTime Get10MinutesEnd(
const QDateTime& dt)
192 QDateTime retVal = Get10MinutesBegin(dt);
194 return retVal.addSecs(600).addMSecs(-1);
198inline QDateTime Get15MinutesBegin(
const QDateTime& dt)
200 int hour = dt.time().hour();
201 int minute = dt.time().minute() / 15 * 15;
203 return QDateTime(dt.date(), QTime(hour, minute));
207inline QDateTime Get15MinutesEnd(
const QDateTime& dt)
209 QDateTime retVal = Get15MinutesBegin(dt);
211 return retVal.addSecs(900).addMSecs(-1);
215inline QDateTime Get30MinutesBegin(
const QDateTime& dt)
217 int hour = dt.time().hour();
218 int minute = dt.time().minute() / 30 * 30;
220 return QDateTime(dt.date(), QTime(hour, minute));
224inline QDateTime Get30MinutesEnd(
const QDateTime& dt)
226 QDateTime retVal = Get30MinutesBegin(dt);
228 return retVal.addSecs(1800).addMSecs(-1);
232inline QDateTime GetHourBegin(
const QDateTime& dt)
234 int hour = dt.time().hour();
236 return QDateTime(dt.date(), QTime(hour, 0));
240inline QDateTime GetHourEnd(
const QDateTime& dt)
242 int hour = dt.time().hour();
244 return QDateTime(dt.date(), QTime(hour, 59, 59, 999));
248inline QDateTime Get3HourBegin(
const QDateTime& dt)
250 int hour = dt.time().hour() / 3 * 3;
252 return QDateTime(dt.date(), QTime(hour, 0));
256inline QDateTime Get3HourEnd(
const QDateTime& dt)
258 QDateTime retVal = Get3HourBegin(dt);
260 return retVal.addSecs(10800).addMSecs(-1);
264inline QDateTime Get6HourBegin(
const QDateTime& dt)
266 int hour = dt.time().hour() / 6 * 6*2;
268 return QDateTime(dt.date(), QTime(hour, 0));
272inline QDateTime Get6HourEnd(
const QDateTime& dt)
274 QDateTime retVal = Get6HourBegin(dt);
276 return retVal.addSecs(21600).addMSecs(-1);
280inline QDateTime Get12HourBegin(
const QDateTime& dt)
282 int hour = dt.time().hour() / 6 * 6*2;
284 return QDateTime(dt.date(), QTime(hour, 0));
288inline QDateTime Get12HourEnd(
const QDateTime& dt)
290 QDateTime retVal = Get12HourBegin(dt);
292 return retVal.addSecs(43200).addMSecs(-1);
296inline QDateTime GetDayBegin(
const QDateTime& dt)
298 return QDateTime(dt.date(), QTime(0, 0));
302inline QDateTime GetDayEnd(
const QDateTime& dt)
304 return QDateTime(dt.date(), QTime(23, 59, 59, 999));
308inline QDateTime GetWeekBegin(
const QDateTime& dt)
311 retVal.setDate(dt.date().addDays(-dt.date().dayOfWeek() + 1));
317inline QDateTime GetWeekEnd(
const QDateTime& dt)
319 QDateTime retVal = GetWeekBegin(dt);
321 return retVal.addDays(7).addMSecs(-1);
325inline QDateTime GetMonthBegin(
const QDateTime& dt)
328 retVal.setDate(QDate(dt.date().year(), dt.date().month(), 1));
334inline QDateTime GetMonthEnd(
const QDateTime& dt)
336 QDateTime retVal = GetMonthBegin(dt);
338 return retVal.addMonths(1).addMSecs(-1);
342inline QDateTime GetQuorterBegin(
const QDateTime& dt)
344 int month = (GetQuorter(dt) - 1) * 3 + 1;
347 retVal.setDate(QDate(dt.date().year(), month, 1));
353inline QDateTime GetQuorterEnd(
const QDateTime& dt)
355 QDateTime retVal = GetQuorterBegin(dt);
357 return retVal.addMonths(3).addMSecs(-1);
361inline QDateTime GetYearBegin(
const QDateTime& dt)
363 return QDateTime(QDate(dt.date().year(), 1, 1), QTime());
367inline QDateTime GetYearEnd(
const QDateTime& dt)
369 QDateTime retVal = GetYearBegin(dt);
371 return retVal.addYears(1).addMSecs(-1);