qdatetime.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/corelib/tools/qdatetime.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8namespace { namespace Q_QGS_defaultDateTimePrivate { typedef QSharedDataPointer<QDateTimePrivate> Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEevaluated 326 times by 128 tests
Evaluated by:
  • tst_languagechange - unknown status
  • tst_networkselftest - unknown status
  • tst_platformsocketengine - unknown status
  • tst_qabstractfileengine - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractslider - unknown status
  • tst_qaccessibility - unknown status
  • tst_qasn1element - unknown status
  • tst_qatomicint - unknown status
  • tst_qauthenticator - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcoreapplication - unknown status
  • tst_qdatastream - unknown status
  • tst_qdate - unknown status
  • tst_qdatetime - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbuscpp2xml - unknown status
  • tst_qdbusmarshall - unknown status
  • ...
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
executed 326 times by 128 tests: guard.store(QtGlobalStatic::Destroyed);
Executed by:
  • tst_languagechange - unknown status
  • tst_networkselftest - unknown status
  • tst_platformsocketengine - unknown status
  • tst_qabstractfileengine - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractslider - unknown status
  • tst_qaccessibility - unknown status
  • tst_qasn1element - unknown status
  • tst_qatomicint - unknown status
  • tst_qauthenticator - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcoreapplication - unknown status
  • tst_qdatastream - unknown status
  • tst_qdate - unknown status
  • tst_qdatetime - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbuscpp2xml - unknown status
  • tst_qdbusmarshall - unknown status
  • ...
}
executed 326 times by 128 tests: end of block
Executed by:
  • tst_languagechange - unknown status
  • tst_networkselftest - unknown status
  • tst_platformsocketengine - unknown status
  • tst_qabstractfileengine - unknown status
  • tst_qabstractitemview - unknown status
  • tst_qabstractnetworkcache - unknown status
  • tst_qabstractslider - unknown status
  • tst_qaccessibility - unknown status
  • tst_qasn1element - unknown status
  • tst_qatomicint - unknown status
  • tst_qauthenticator - unknown status
  • tst_qbuttongroup - unknown status
  • tst_qcalendarwidget - unknown status
  • tst_qcolordialog - unknown status
  • tst_qcombobox - unknown status
  • tst_qcommandlinkbutton - unknown status
  • tst_qcompleter - unknown status
  • tst_qcoreapplication - unknown status
  • tst_qdatastream - unknown status
  • tst_qdate - unknown status
  • tst_qdatetime - unknown status
  • tst_qdatetimeedit - unknown status
  • tst_qdbusabstractadaptor - unknown status
  • tst_qdbuscpp2xml - unknown status
  • tst_qdbusmarshall - unknown status
  • ...
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type (new QDateTimePrivate()))) : value (new QDateTimePrivate()) { guard.store(QtGlobalStatic::Initialized); } } holder; return
executed 7100330 times by 127 tests: return &holder.value;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractFileEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDBusMetaType
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • ...
&holder.value;
executed 7100330 times by 127 tests: return &holder.value;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractFileEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDBusMetaType
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • ...
} } } static QGlobalStatic<QSharedDataPointer<QDateTimePrivate>, Q_QGS_defaultDateTimePrivate::innerFunction, Q_QGS_defaultDateTimePrivate::guard> defaultDateTimePrivate;
0-7100330
9-
10-
11-
12-
13-
14enum {-
15 SECS_PER_DAY = 86400,-
16 MSECS_PER_DAY = 86400000,-
17 SECS_PER_HOUR = 3600,-
18 MSECS_PER_HOUR = 3600000,-
19 SECS_PER_MIN = 60,-
20 MSECS_PER_MIN = 60000,-
21 TIME_T_MAX = 2145916799,-
22 JULIAN_DAY_FOR_EPOCH = 2440588-
23};-
24-
25-
26-
27-
28-
29static inline QDate fixedDate(int y, int m, int d)-
30{-
31 QDate result(y, m, 1);-
32 result.setDate(y, m, qMin(d, result.daysInMonth()));-
33 return result;-
34}-
35static inline qint64 floordiv(qint64 a, int b)-
36{-
37 return
executed 96372952 times by 106 tests: return (a - (a < 0 ? b - 1 : 0)) / b;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • ...
(a - (a % b< 0 ? b - 1 : 0)) / b;
executed 96372952 times by 106 tests: return (a - (a < 0 ? b - 1 : 0)) / b;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • ...
96372952
38}-
39-
40static inline int floordiv(int a, int b)-
41{-
42 return
executed 138065546 times by 106 tests: return (a - (a < 0 ? b - 1 : 0)) / b;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • ...
(a - (a % b< 0 ? b - 1 : 0)) / b;
executed 138065546 times by 106 tests: return (a - (a < 0 ? b - 1 : 0)) / b;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • ...
138065546
43}-
44-
45static inline qint64 julianDayFromDate(int year, int month, int day)-
46{-
47-
48 if (year < 0)-
49 ++year;-
50-
51-
52-
53-
54-
55-
56 int a = floordiv(14 - month, 12);-
57 qint64 y = (qint64)year + 4800 - a;-
58 int m = month + 12 * a - 3;-
59 return day + floordiv(153 * m + 2, 5) + 365 * y + floordiv(y, 4) - floordiv(y, 100) + floordiv(y, 400) - 32045;-
60}-
61-
62struct ParsedDate-
63{-
64 int year, month, day;-
65};-
66-
67-
68__attribute__((noinline))-
69static ParsedDate getDateFromJulianDay(qint64 julianDay)-
70{-
71-
72-
73-
74-
75-
76 qint64 a = julianDay + 32044;-
77 qint64 b = floordiv(4 * a + 3, 146097);-
78 int c = a - floordiv(146097 * b, 4);-
79-
80 int d = floordiv(4 * c + 3, 1461);-
81 int e = c - floordiv(1461 * d, 4);-
82 int m = floordiv(5 * e + 2, 153);-
83-
84 int day = e - floordiv(153 * m + 2, 5) + 1;-
85 int month = m + 3 - 12 * floordiv(m, 10);-
86 int year = 100 * b + d - 4800 + floordiv(m, 10);-
87-
88-
89 if (year <= 0)-
90 --year ;-
91-
92 const ParsedDate result = { year, month, day };-
93 return result;-
94}-
95-
96-
97-
98-
99-
100static const char monthDays[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };-
101-
102-
103static const char qt_shortMonthNames[][4] = {-
104 "Jan", "Feb", "Mar", "Apr", "May", "Jun",-
105 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };-
106-
107static int qt_monthNumberFromShortName(QStringRef shortName)-
108{-
109 for (unsigned int i = 0; i < sizeof(qt_shortMonthNames) / sizeof(qt_shortMonthNames[0]); ++i) {-
110 if (shortName == QLatin1String(qt_shortMonthNames[i], 3))-
111 return i + 1;-
112 }-
113 return -1;-
114}-
115static int qt_monthNumberFromShortName(const QString &shortName)-
116{ return qt_monthNumberFromShortName(QStringRef(&shortName)); }-
117-
118static int fromShortMonthName(const QStringRef &monthName)-
119{-
120-
121 int month = qt_monthNumberFromShortName(monthName);-
122 if (month != -1)-
123 return month;-
124-
125 for (int i = 1; i <= 12; ++i) {-
126 if (monthName == QDate::shortMonthName(i))-
127 return i;-
128 }-
129 return -1;-
130}-
131-
132-
133-
134struct ParsedRfcDateTime {-
135 QDate date;-
136 QTime time;-
137 int utcOffset;-
138};-
139-
140static ParsedRfcDateTime rfcDateImpl(const QString &s)-
141{-
142 ParsedRfcDateTime result;-
143-
144-
145 QRegExp rex(([]() -> QString { enum { Size = sizeof(u"" "^(?:[A-Z][a-z]+,)?[ \\t]*(\\d{1,2})[ \\t]+([A-Z][a-z]+)[ \\t]+(\\d\\d\\d\\d)(?:[ \\t]+(\\d\\d):(\\d\\d)(?::(\\d\\d))?)?[ \\t]*(?:([+-])(\\d\\d)(\\d\\d))?")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "^(?:[A-Z][a-z]+,)?[ \\t]*(\\d{1,2})[ \\t]+([A-Z][a-z]+)[ \\t]+(\\d\\d\\d\\d)(?:[ \\t]+(\\d\\d):(\\d\\d)(?::(\\d\\d))?)?[ \\t]*(?:([+-])(\\d\\d)(\\d\\d))?" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()));-
146 if (s.indexOf(rex) == 0) {-
147 const QStringList cap = rex.capturedTexts();-
148 result.date = QDate(cap[3].toInt(), qt_monthNumberFromShortName(cap[2]), cap[1].toInt());-
149 if (!cap[4].isEmpty())-
150 result.time = QTime(cap[4].toInt(), cap[5].toInt(), cap[6].toInt());-
151 const bool positiveOffset = (cap[7] == QLatin1String("+"));-
152 const int hourOffset = cap[8].toInt();-
153 const int minOffset = cap[9].toInt();-
154 result.utcOffset = ((hourOffset * 60 + minOffset) * (positiveOffset ? 60 : -60));-
155 } else {-
156-
157 QRegExp rex(([]() -> QString { enum { Size = sizeof(u"" "^[A-Z][a-z]+[ \\t]+([A-Z][a-z]+)[ \\t]+(\\d\\d)(?:[ \\t]+(\\d\\d):(\\d\\d):(\\d\\d))?[ \\t]+(\\d\\d\\d\\d)[ \\t]*(?:([+-])(\\d\\d)(\\d\\d))?")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "^[A-Z][a-z]+[ \\t]+([A-Z][a-z]+)[ \\t]+(\\d\\d)(?:[ \\t]+(\\d\\d):(\\d\\d):(\\d\\d))?[ \\t]+(\\d\\d\\d\\d)[ \\t]*(?:([+-])(\\d\\d)(\\d\\d))?" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()));-
158 if (s.indexOf(rex) == 0) {-
159 const QStringList cap = rex.capturedTexts();-
160 result.date = QDate(cap[6].toInt(), qt_monthNumberFromShortName(cap[1]), cap[2].toInt());-
161 if (!cap[3].isEmpty())-
162 result.time = QTime(cap[3].toInt(), cap[4].toInt(), cap[5].toInt());-
163 const bool positiveOffset = (cap[7] == QLatin1String("+"));-
164 const int hourOffset = cap[8].toInt();-
165 const int minOffset = cap[9].toInt();-
166 result.utcOffset = ((hourOffset * 60 + minOffset) * (positiveOffset ? 60 : -60));-
167 }-
168 }-
169-
170 return result;-
171}-
172-
173-
174-
175static QString toOffsetString(Qt::DateFormat format, int offset)-
176{-
177 return QString::asprintf("%c%02d%s%02d",-
178 offset >= 0 ? '+' : '-',-
179 qAbs(offset) / SECS_PER_HOUR,-
180-
181 format == Qt::TextDate ? "" : ":",-
182 (qAbs(offset) / 60) % 60);-
183}-
184-
185-
186static int fromOffsetString(const QStringRef &offsetString, bool *valid) noexcept-
187{-
188 *valid = false;-
189-
190 const int size = offsetString.size();-
191 if (size < 2
size < 2Description
TRUEnever evaluated
FALSEevaluated 22 times by 1 test
Evaluated by:
  • tst_QDateTime
|| size > 6
size > 6Description
TRUEnever evaluated
FALSEevaluated 22 times by 1 test
Evaluated by:
  • tst_QDateTime
)
0-22
192 return
never executed: return 0;
0;
never executed: return 0;
0
193-
194-
195 int sign;-
196-
197-
198 const QChar signChar = offsetString.at(0);-
199 if (signChar == QLatin1Char('+')
signChar == QLatin1Char('+')Description
TRUEevaluated 11 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 11 times by 1 test
Evaluated by:
  • tst_QDateTime
)
11
200 sign = 1;
executed 11 times by 1 test: sign = 1;
Executed by:
  • tst_QDateTime
11
201 else if (signChar == QLatin1Char('-')
signChar == QLatin1Char('-')Description
TRUEevaluated 10 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
)
1-10
202 sign = -1;
executed 10 times by 1 test: sign = -1;
Executed by:
  • tst_QDateTime
10
203 else-
204 return
executed 1 time by 1 test: return 0;
Executed by:
  • tst_QDateTime
0;
executed 1 time by 1 test: return 0;
Executed by:
  • tst_QDateTime
1
205-
206-
207 QVector<const QStringRef > partstime = offsetString.mid(1).split);-
208 int hhLen = time.indexOf(QLatin1Char(':'));-
209 int mmIndex;-
210 if (parts.count()hhLen
hhLen == -1Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_QDateTime
== -1
hhLen == -1Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_QDateTime
)
8-13
211 {13
parts.append(parts.first().mid(mmIndex = hhLen =
executed 13 times by 1 test: mmIndex = hhLen = 2;
Executed by:
  • tst_QDateTime
2));
executed 13 times by 1 test: mmIndex = hhLen = 2;
Executed by:
  • tst_QDateTime
parts[0]
executed 13 times by 1 test: mmIndex = hhLen = 2;
Executed by:
  • tst_QDateTime
executed 13 times by 1 test: mmIndex = hhLen = 2;
Executed by:
  • tst_QDateTime
;
executed 13 times by 1 test: mmIndex = hhLen = 2;
Executed by:
  • tst_QDateTime
212 else-
213 mmIndex
executed 8 times by 1 test: mmIndex = hhLen + 1;
Executed by:
  • tst_QDateTime
executed 8 times by 1 test: mmIndex = hhLen + 1;
Executed by:
  • tst_QDateTime
= partshhLen + 1;
executed 8 times by 1 test: mmIndex = hhLen + 1;
Executed by:
  • tst_QDateTime
8
214-
215 const QStringRef hhRef = time.first().left(2hhLen);-
216 }bool ok = false;-
217 const int hour = partshhRef.first().toInt(&ok);-
218 if (!ok
!okDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 19 times by 1 test
Evaluated by:
  • tst_QDateTime
)
2-19
219 return
executed 2 times by 1 test: return 0;
Executed by:
  • tst_QDateTime
0;
executed 2 times by 1 test: return 0;
Executed by:
  • tst_QDateTime
2
220-
221 const QStringRef mmRef = time.mid(mmIndex);-
222 const int minute = (partsmmRef
mmRef.isEmpty()Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 15 times by 1 test
Evaluated by:
  • tst_QDateTime
.at(1).isEmpty())()
mmRef.isEmpty()Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 15 times by 1 test
Evaluated by:
  • tst_QDateTime
? 0 : partsmmRef.at(1).toInt(&ok);
4-15
223 if (!ok
!okDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 18 times by 1 test
Evaluated by:
  • tst_QDateTime
|| minute < 0
minute < 0Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • tst_QDateTime
|| minute > 59
minute > 59Description
TRUEnever evaluated
FALSEevaluated 18 times by 1 test
Evaluated by:
  • tst_QDateTime
)
0-18
224 return
executed 1 time by 1 test: return 0;
Executed by:
  • tst_QDateTime
0;
executed 1 time by 1 test: return 0;
Executed by:
  • tst_QDateTime
1
225-
226 *valid = true;-
227 return
executed 18 times by 1 test: return sign * ((hour * 60) + minute) * 60;
Executed by:
  • tst_QDateTime
sign * ((hour * 60) + minute) * 60;
executed 18 times by 1 test: return sign * ((hour * 60) + minute) * 60;
Executed by:
  • tst_QDateTime
18
228}-
229QDate::QDate(int y, int m, int d)-
230{-
231 setDate(y, m, d);-
232}-
233int QDate::year() const-
234{-
235 if (isNull())-
236 return 0;-
237-
238 return getDateFromJulianDay(jd).year;-
239}-
240int QDate::month() const-
241{-
242 if (isNull())-
243 return 0;-
244-
245 return getDateFromJulianDay(jd).month;-
246}-
247int QDate::day() const-
248{-
249 if (isNull())-
250 return 0;-
251-
252 return getDateFromJulianDay(jd).day;-
253}-
254int QDate::dayOfWeek() const-
255{-
256 if (isNull())-
257 return 0;-
258-
259 if (jd >= 0)-
260 return (jd % 7) + 1;-
261 else-
262 return ((jd + 1) % 7) + 7;-
263}-
264int QDate::dayOfYear() const-
265{-
266 if (isNull())-
267 return 0;-
268-
269 return jd - julianDayFromDate(year(), 1, 1) + 1;-
270}-
271int QDate::daysInMonth() const-
272{-
273 if (isNull())-
274 return 0;-
275-
276 const ParsedDate pd = getDateFromJulianDay(jd);-
277 if (pd.month == 2 && isLeapYear(pd.year))-
278 return 29;-
279 else-
280 return monthDays[pd.month];-
281}-
282int QDate::daysInYear() const-
283{-
284 if (isNull())-
285 return 0;-
286-
287 return isLeapYear(getDateFromJulianDay(jd).year) ? 366 : 365;-
288}-
289int QDate::weekNumber(int *yearNumber) const-
290{-
291 if (!isValid())-
292 return 0;-
293-
294 int year = QDate::year();-
295 int yday = dayOfYear();-
296 int wday = dayOfWeek();-
297-
298 int week = (yday - wday + 10) / 7;-
299-
300 if (week == 0) {-
301-
302 --year;-
303 week = (yday + 365 + (QDate::isLeapYear(year) ? 1 : 0) - wday + 10) / 7;-
304 ((!(week == 52 || week == 53)) ? qt_assert("week == 52 || week == 53",__FILE__,594602) : qt_noop());-
305 } else if (week == 53) {-
306-
307 int w = (yday - 365 - (QDate::isLeapYear(year) ? 1 : 0) - wday + 10) / 7;-
308 if (w > 0) {-
309 ++year;-
310 week = w;-
311 }-
312 ((!(week == 53 || week == 1)) ? qt_assert("week == 53 || week == 1",__FILE__,602610) : qt_noop());-
313 }-
314-
315 if (yearNumber != 0)-
316 *yearNumber = year;-
317 return week;-
318}-
319QString QDate::shortMonthName(int month, QDate::MonthNameType type)-
320{-
321 if (month >= 1 || month <= 12) {-
322 switch (type) {-
323 case QDate::DateFormat:-
324 return QLocale::system().monthName(month, QLocale::ShortFormat);-
325 case QDate::StandaloneFormat:-
326 return QLocale::system().standaloneMonthName(month, QLocale::ShortFormat);-
327 }-
328 }-
329 return QString();-
330}-
331QString QDate::longMonthName(int month, MonthNameType type)-
332{-
333 if (month >= 1 && month <= 12) {-
334 switch (type) {-
335 case QDate::DateFormat:-
336 return QLocale::system().monthName(month, QLocale::LongFormat);-
337 case QDate::StandaloneFormat:-
338 return QLocale::system().standaloneMonthName(month, QLocale::LongFormat);-
339 }-
340 }-
341 return QString();-
342}-
343QString QDate::shortDayName(int weekday, MonthNameType type)-
344{-
345 if (weekday >= 1 && weekday <= 7) {-
346 switch (type) {-
347 case QDate::DateFormat:-
348 return QLocale::system().dayName(weekday, QLocale::ShortFormat);-
349 case QDate::StandaloneFormat:-
350 return QLocale::system().standaloneDayName(weekday, QLocale::ShortFormat);-
351 }-
352 }-
353 return QString();-
354}-
355QString QDate::longDayName(int weekday, MonthNameType type)-
356{-
357 if (weekday >= 1 && weekday <= 7) {-
358 switch (type) {-
359 case QDate::DateFormat:-
360 return QLocale::system().dayName(weekday, QLocale::LongFormat);-
361 case QDate::StandaloneFormat:-
362 return QLocale::system().standaloneDayName(weekday, QLocale::LongFormat);-
363 }-
364 }-
365 return QString();-
366}-
367-
368-
369-
370-
371-
372static QString toStringTextDate(QDate date)-
373{-
374 const ParsedDate pd = getDateFromJulianDay(date.toJulianDay());-
375 static const QLatin1Char sp(' ');-
376 return date.shortDayName(date.dayOfWeek()) + sp-
377 + date.shortMonthName(pd.month) + sp-
378 + QString::number(pd.day) + sp-
379 + QString::number(pd.year);-
380}-
381-
382-
383static QString toStringIsoDate(qint64 jd)-
384{-
385 const ParsedDate pd = getDateFromJulianDay(jd);-
386 if (pd.year >= 0 && pd.year <= 9999)-
387 return QString::asprintf("%04d-%02d-%02d", pd.year, pd.month, pd.day);-
388 else-
389 return QString();-
390}-
391QString QDate::toString(Qt::DateFormat format) const-
392{-
393 if (!isValid())-
394 return QString();-
395-
396 switch (format) {-
397 case Qt::SystemLocaleDate:-
398 case Qt::SystemLocaleShortDate:-
399 return QLocale::system().toString(*this, QLocale::ShortFormat);-
400 case Qt::SystemLocaleLongDate:-
401 return QLocale::system().toString(*this, QLocale::LongFormat);-
402 case Qt::LocaleDate:-
403 case Qt::DefaultLocaleShortDate:-
404 return QLocale().toString(*this, QLocale::ShortFormat);-
405 case Qt::DefaultLocaleLongDate:-
406 return QLocale().toString(*this, QLocale::LongFormat);-
407 case Qt::RFC2822Date:-
408 return QLocale::c().toString(*this, ([]() -> QString { enum { Size = sizeof(u"" "dd MMM yyyy")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "dd MMM yyyy" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()));-
409 default:-
410-
411 case Qt::TextDate:-
412 return toStringTextDate(*this);-
413-
414 case Qt::ISODate:-
415 return toStringIsoDate(jd);-
416 }-
417}-
418QString QDate::toString(const QString& format) const-
419{-
420 return QLocale::system().toString(*this, format);-
421}-
422bool QDate::setDate(int year, int month, int day)-
423{-
424 if (isValid(year, month, day))-
425 jd = julianDayFromDate(year, month, day);-
426 else-
427 jd = nullJd();-
428-
429 return isValid();-
430}-
431void QDate::getDate(int *year, int *month, int *day) const-
432{-
433 ParsedDate pd = { 0, 0, 0 };-
434 if (isValid()
isValid()Description
TRUEevaluated 13951235 times by 101 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
FALSEevaluated 3 times by 2 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
)
3-13951235
435 pd = getDateFromJulianDay(jd);
executed 13956030 times by 101 tests: pd = getDateFromJulianDay(jd);
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
13956030
436-
437 if (year
yearDescription
TRUEevaluated 13956030 times by 101 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
FALSEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
)
3-13956030
438 *
executed 13956030 times by 101 tests: *year = pd.year;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
year = pd.year;
executed 13956030 times by 101 tests: *year = pd.year;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
13956030
439 if (month
monthDescription
TRUEevaluated 13955044 times by 101 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
FALSEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
)
3-13955044
440 *
executed 13956030 times by 101 tests: *month = pd.month;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
month = pd.month;
executed 13956030 times by 101 tests: *month = pd.month;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
13956030
441 if (day
dayDescription
TRUEevaluated 13942777 times by 101 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
FALSEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
)
3-13942777
442 *
executed 13954660 times by 101 tests: *day = pd.day;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
day = pd.day;
executed 13954660 times by 101 tests: *day = pd.day;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
13954660
443}
executed 13941005 times by 101 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
13941005
444-
445-
446-
447-
448-
449-
450void QDate::getDate(int *year, int *month, int *day)-
451{-
452 qAsConst(*this).getDate(year, month, day);-
453}
executed 13947892 times by 101 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • tst_QDir
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QErrorMessage
  • ...
13947892
454QDate QDate::addDays(qint64 ndays) const-
455{-
456 if (isNull())-
457 return QDate();-
458-
459-
460-
461 return fromJulianDay(jd + ndays);-
462}-
463QDate QDate::addMonths(int nmonths) const-
464{-
465 if (!isValid())-
466 return QDate();-
467 if (!nmonths)-
468 return *this;-
469-
470 int old_y, y, m, d;-
471 {-
472 const ParsedDate pd = getDateFromJulianDay(jd);-
473 y = pd.year;-
474 m = pd.month;-
475 d = pd.day;-
476 }-
477 old_y = y;-
478-
479 bool increasing = nmonths > 0;-
480-
481 while (nmonths != 0) {-
482 if (nmonths < 0 && nmonths + 12 <= 0) {-
483 y--;-
484 nmonths+=12;-
485 } else if (nmonths < 0) {-
486 m+= nmonths;-
487 nmonths = 0;-
488 if (m <= 0) {-
489 --y;-
490 m += 12;-
491 }-
492 } else if (nmonths - 12 >= 0) {-
493 y++;-
494 nmonths -= 12;-
495 } else if (m == 12) {-
496 y++;-
497 m = 0;-
498 } else {-
499 m += nmonths;-
500 nmonths = 0;-
501 if (m > 12) {-
502 ++y;-
503 m -= 12;-
504 }-
505 }-
506 }-
507-
508-
509 if ((old_y > 0 && y <= 0) ||-
510 (old_y < 0 && y >= 0))-
511-
512 y += increasing ? +1 : -1;-
513-
514 return fixedDate(y, m, d);-
515}-
516QDate QDate::addYears(int nyears) const-
517{-
518 if (!isValid())-
519 return QDate();-
520-
521 ParsedDate pd = getDateFromJulianDay(jd);-
522-
523 int old_y = pd.year;-
524 pd.year += nyears;-
525-
526-
527 if ((old_y > 0 && pd.year <= 0) ||-
528 (old_y < 0 && pd.year >= 0))-
529-
530 pd.year += nyears > 0 ? +1 : -1;-
531-
532 return fixedDate(pd.year, pd.month, pd.day);-
533}-
534qint64 QDate::daysTo(const QDate &d) const-
535{-
536 if (isNull() || d.isNull())-
537 return 0;-
538-
539-
540 return d.jd - jd;-
541}-
542QDate QDate::fromString(const QString& string, Qt::DateFormat format)-
543{-
544 if (string.isEmpty())-
545 return QDate();-
546-
547 switch (format) {-
548 case Qt::SystemLocaleDate:-
549 case Qt::SystemLocaleShortDate:-
550 return QLocale::system().toDate(string, QLocale::ShortFormat);-
551 case Qt::SystemLocaleLongDate:-
552 return QLocale::system().toDate(string, QLocale::LongFormat);-
553 case Qt::LocaleDate:-
554 case Qt::DefaultLocaleShortDate:-
555 return QLocale().toDate(string, QLocale::ShortFormat);-
556 case Qt::DefaultLocaleLongDate:-
557 return QLocale().toDate(string, QLocale::LongFormat);-
558 case Qt::RFC2822Date:-
559 return rfcDateImpl(string).date;-
560 default:-
561-
562 case Qt::TextDate: {-
563 QVector<QStringRef> parts = string.splitRef(QLatin1Char(' '), QString::SkipEmptyParts);-
564-
565 if (parts.count() != 4)-
566 return QDate();-
567-
568 QStringRef monthName = parts.at(1);-
569 const int month = fromShortMonthName(monthName);-
570 if (month == -1) {-
571-
572 return QDate();-
573 }-
574-
575 bool ok = false;-
576 int year = parts.at(3).toInt(&ok);-
577 if (!ok)-
578 return QDate();-
579-
580 return QDate(year, month, parts.at(2).toInt());-
581 }-
582-
583 case Qt::ISODate: {-
584-
585 if (string.size() < 10 || string.at(4).isDigit() || string.at(7).isDigit()-
586 || (string.size() > 10 && string.at(10).isDigit())) {-
587 return QDate();-
588 }-
589 const int year = string.midRef(0, 4).toInt();-
590 if (year <= 0 || year > 9999)-
591 return QDate();-
592 return QDate(year, string.midRef(5, 2).toInt(), string.midRef(8, 2).toInt());-
593 }-
594 }-
595 return QDate();-
596}-
597QDate QDate::fromString(const QString &string, const QString &format)-
598{-
599 QDate date;-
600-
601 QDateTimeParser dt(QVariant::Date, QDateTimeParser::FromString);-
602 if (dt.parseFormat(format))-
603 dt.fromString(string, &date, 0);-
604-
605-
606-
607-
608 return date;-
609}-
610bool QDate::isValid(int year, int month, int day)-
611{-
612-
613 if (year == 0)-
614 return false;-
615-
616 return (day > 0 && month > 0 && month <= 12) &&-
617 (day <= monthDays[month] || (day == 29 && month == 2 && isLeapYear(year)));-
618}-
619bool QDate::isLeapYear(int y)-
620{-
621-
622 if ( y < 1)-
623 ++y;-
624-
625 return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;-
626}-
627QTime::QTime(int h, int m, int s, int ms)-
628{-
629 setHMS(h, m, s, ms);-
630}-
631bool QTime::isValid() const-
632{-
633 return mds > NullTime && mds < MSECS_PER_DAY;-
634}-
635int QTime::hour() const-
636{-
637 if (!isValid())-
638 return -1;-
639-
640 return ds() / MSECS_PER_HOUR;-
641}-
642int QTime::minute() const-
643{-
644 if (!isValid())-
645 return -1;-
646-
647 return (ds() % MSECS_PER_HOUR) / MSECS_PER_MIN;-
648}-
649int QTime::second() const-
650{-
651 if (!isValid())-
652 return -1;-
653-
654 return (ds() / 1000)%SECS_PER_MIN;-
655}-
656int QTime::msec() const-
657{-
658 if (!isValid())-
659 return -1;-
660-
661 return ds() % 1000;-
662}-
663QString QTime::toString(Qt::DateFormat format) const-
664{-
665 if (!isValid())-
666 return QString();-
667-
668 switch (format) {-
669 case Qt::SystemLocaleDate:-
670 case Qt::SystemLocaleShortDate:-
671 return QLocale::system().toString(*this, QLocale::ShortFormat);-
672 case Qt::SystemLocaleLongDate:-
673 return QLocale::system().toString(*this, QLocale::LongFormat);-
674 case Qt::LocaleDate:-
675 case Qt::DefaultLocaleShortDate:-
676 return QLocale().toString(*this, QLocale::ShortFormat);-
677 case Qt::DefaultLocaleLongDate:-
678 return QLocale().toString(*this, QLocale::LongFormat);-
679 case Qt::RFC2822Date:-
680 case Qt::ISODate:-
681 case Qt::TextDate:-
682 default:-
683 return QString::asprintf("%02d:%02d:%02d", hour(), minute(), second());-
684 }-
685}-
686QString QTime::toString(const QString& format) const-
687{-
688 return QLocale::system().toString(*this, format);-
689}-
690bool QTime::setHMS(int h, int m, int s, int ms)-
691{-
692-
693-
694-
695 if (!isValid(h,m,s,ms)) {-
696 mds = NullTime;-
697 return false;-
698 }-
699 mds = (h*SECS_PER_HOUR + m*SECS_PER_MIN + s)*1000 + ms;-
700 return true;-
701}-
702QTime QTime::addSecs(int s) const-
703{-
704 s %= SECS_PER_DAY;-
705 return addMSecs(s * 1000);-
706}-
707int QTime::secsTo(const QTime &t) const-
708{-
709 if (!isValid() || !t.isValid())-
710 return 0;-
711-
712-
713 int ourSeconds = ds() / 1000;-
714 int theirSeconds = t.ds() / 1000;-
715 return theirSeconds - ourSeconds;-
716}-
717QTime QTime::addMSecs(int ms) const-
718{-
719 QTime t;-
720 if (isValid()) {-
721 if (ms < 0) {-
722-
723 int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY;-
724 t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY;-
725 } else {-
726 t.mds = (ds() + ms) % MSECS_PER_DAY;-
727 }-
728 }-
729-
730-
731-
732-
733 return t;-
734}-
735int QTime::msecsTo(const QTime &t) const-
736{-
737 if (!isValid() || !t.isValid())-
738 return 0;-
739-
740-
741-
742-
743-
744-
745 return t.ds() - ds();-
746}-
747static QTime fromIsoTimeString(const QStringRef &string, Qt::DateFormat format, bool *isMidnight24)-
748{-
749 if (isMidnight24)-
750 *isMidnight24 = false;-
751-
752 const int size = string.size();-
753 if (size < 5)-
754 return QTime();-
755-
756 bool ok = false;-
757 int hour = string.mid(0, 2).toInt(&ok);-
758 if (!ok)-
759 return QTime();-
760 const int minute = string.mid(3, 2).toInt(&ok);-
761 if (!ok)-
762 return QTime();-
763 int second = 0;-
764 int msec = 0;-
765-
766 if (size == 5) {-
767-
768 second = 0;-
769 msec = 0;-
770 } else if (string.at(5) == QLatin1Char(',') || string.at(5) == QLatin1Char('.')) {-
771 if (format == Qt::TextDate)-
772 return QTime();-
773 const QStringRef minuteFractionStr = string.mid(6, 5);-
774 const long minuteFractionInt = minuteFractionStr.toLong(&ok);-
775 if (!ok)-
776 return QTime();-
777 const float minuteFraction = double(minuteFractionInt) / (std::pow(double(10), minuteFractionStr.count()));-
778-
779 const float secondWithMs = minuteFraction * 60;-
780 const float secondNoMs = std::floor(secondWithMs);-
781 const float secondFraction = secondWithMs - secondNoMs;-
782 second = secondNoMs;-
783 msec = qMin(qRound(secondFraction * 1000.0), 999);-
784 } else {-
785-
786 second = string.mid(6, 2).toInt(&ok);-
787 if (!ok)-
788 return QTime();-
789 if (size > 8 && (string.at(8) == QLatin1Char(',') || string.at(8) == QLatin1Char('.'))) {-
790 const QStringRef msecStr(string.mid(9, 4));-
791 int msecInt = msecStr.isEmpty() ? 0 : msecStr.toInt(&ok);-
792 if (!ok)-
793 return QTime();-
794 const double secondFraction(msecInt / (std::pow(double(10), msecStr.count())));-
795 msec = qMin(qRound(secondFraction * 1000.0), 999);-
796 }-
797 }-
798-
799 if (format == Qt::ISODate && hour == 24 && minute == 0 && second == 0 && msec == 0) {-
800 if (isMidnight24)-
801 *isMidnight24 = true;-
802 hour = 0;-
803 }-
804-
805 return QTime(hour, minute, second, msec);-
806}-
807QTime QTime::fromString(const QString& string, Qt::DateFormat format)-
808{-
809 if (string.isEmpty())-
810 return QTime();-
811-
812 switch (format) {-
813 case Qt::SystemLocaleDate:-
814 case Qt::SystemLocaleShortDate:-
815 return QLocale::system().toTime(string, QLocale::ShortFormat);-
816 case Qt::SystemLocaleLongDate:-
817 return QLocale::system().toTime(string, QLocale::LongFormat);-
818 case Qt::LocaleDate:-
819 case Qt::DefaultLocaleShortDate:-
820 return QLocale().toTime(string, QLocale::ShortFormat);-
821 case Qt::DefaultLocaleLongDate:-
822 return QLocale().toTime(string, QLocale::LongFormat);-
823 case Qt::RFC2822Date:-
824 return rfcDateImpl(string).time;-
825 case Qt::ISODate:-
826 case Qt::TextDate:-
827 default:-
828 return fromIsoTimeString(&string, format, 0);-
829 }-
830}-
831QTime QTime::fromString(const QString &string, const QString &format)-
832{-
833 QTime time;-
834-
835 QDateTimeParser dt(QVariant::Time, QDateTimeParser::FromString);-
836 if (dt.parseFormat(format))-
837 dt.fromString(string, 0, &time);-
838-
839-
840-
841-
842 return time;-
843}-
844bool QTime::isValid(int h, int m, int s, int ms)-
845{-
846 return (uint)h < 24 && (uint)m < 60 && (uint)s < 60 && (uint)ms < 1000;-
847}-
848void QTime::start()-
849{-
850 *this = currentTime();-
851}-
852int QTime::restart()-
853{-
854 QTime t = currentTime();-
855 int n = msecsTo(t);-
856 if (n < 0)-
857 n += 86400*1000;-
858 *this = t;-
859 return n;-
860}-
861int QTime::elapsed() const-
862{-
863 int n = msecsTo(currentTime());-
864 if (n < 0)-
865 n += 86400 * 1000;-
866 return n;-
867}-
868-
869-
870-
871-
872-
873-
874static void qt_tzset()-
875{-
876-
877-
878-
879-
880-
881-
882 tzset();-
883-
884}-
885-
886-
887-
888-
889-
890-
891static int qt_timezone()-
892{-
893 return
executed 7004 times by 16 tests: return timezone;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QAccessibility
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QFtp
  • tst_QItemDelegate
  • tst_QMetaType
  • tst_QNetworkCacheMetaData
  • tst_QNetworkCookieJar
  • tst_QNetworkReply
  • tst_QNetworkRequest
  • tst_QNoDebug
  • tst_QStyleSheetStyle
  • tst_QTime
timezone;
executed 7004 times by 16 tests: return timezone;
Executed by:
  • tst_QAbstractNetworkCache
  • tst_QAccessibility
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QFtp
  • tst_QItemDelegate
  • tst_QMetaType
  • tst_QNetworkCacheMetaData
  • tst_QNetworkCookieJar
  • tst_QNetworkReply
  • tst_QNetworkRequest
  • tst_QNoDebug
  • tst_QStyleSheetStyle
  • tst_QTime
7004
894-
895}-
896-
897-
898static QString qt_tzname(QDateTimePrivate::DaylightStatus daylightStatus)-
899{-
900 int isDst = (daylightStatus == QDateTimePrivate::DaylightTime) ? 1 : 0;-
901-
902-
903-
904-
905-
906-
907-
908 return QString::fromLocal8Bit(tzname[isDst]);-
909-
910-
911}-
912-
913-
914-
915-
916-
917-
918static qint64 qt_mktime(QDate *date, QTime *time, QDateTimePrivate::DaylightStatus *daylightStatus,-
919 QString *abbreviation, bool *ok = 0)-
920{-
921 const qint64 msec = time->msec();-
922 int yy, mm, dd;-
923 date->getDate(&yy, &mm, &dd);-
924 tm local;-
925 memset(&local, 0, sizeof(local));-
926 local.tm_sec = time->second();-
927 local.tm_min = time->minute();-
928 local.tm_hour = time->hour();-
929 local.tm_mday = dd;-
930 local.tm_mon = mm - 1;-
931 local.tm_year = yy - 1900;-
932 if (daylightStatus)-
933 local.tm_isdst = int(*daylightStatus);-
934 else-
935 local.tm_isdst = -1;-
936-
937-
938-
939-
940 time_t secsSinceEpoch = mktime(&local);-
941 if (secsSinceEpoch != time_t(-1)) {-
942 *date = QDate(local.tm_year + 1900, local.tm_mon + 1, local.tm_mday);-
943 *time = QTime(local.tm_hour, local.tm_min, local.tm_sec, msec);-
944 if (local.tm_isdst >= 1) {-
945 if (daylightStatus)-
946 *daylightStatus = QDateTimePrivate::DaylightTime;-
947 if (abbreviation)-
948 *abbreviation = qt_tzname(QDateTimePrivate::DaylightTime);-
949 } else if (local.tm_isdst == 0) {-
950 if (daylightStatus)-
951 *daylightStatus = QDateTimePrivate::StandardTime;-
952 if (abbreviation)-
953 *abbreviation = qt_tzname(QDateTimePrivate::StandardTime);-
954 } else {-
955 if (daylightStatus)-
956 *daylightStatus = QDateTimePrivate::UnknownDaylightTime;-
957 if (abbreviation)-
958 *abbreviation = qt_tzname(QDateTimePrivate::StandardTime);-
959 }-
960 if (ok)-
961 *ok = true;-
962 } else {-
963 *date = QDate();-
964 *time = QTime();-
965 if (daylightStatus)-
966 *daylightStatus = QDateTimePrivate::UnknownDaylightTime;-
967 if (abbreviation)-
968 *abbreviation = QString();-
969 if (ok)-
970 *ok = false;-
971 }-
972-
973-
974 return ((qint64)secsSinceEpoch * 1000) + msec;-
975}-
976-
977-
978-
979static bool qt_localtime(qint64 msecsSinceEpoch, QDate *localDate, QTime *localTime,-
980 QDateTimePrivate::DaylightStatus *daylightStatus)-
981{-
982 const time_t secsSinceEpoch = msecsSinceEpoch / 1000;-
983 const int msec = msecsSinceEpoch % 1000;-
984-
985 tm local;-
986 bool valid = false;-
987 qt_tzset();-
988-
989-
990 tm *res = 0;-
991 res = localtime_r(&secsSinceEpoch, &local);-
992 if (res)-
993 valid = true;-
994 if (valid) {-
995 *localDate = QDate(local.tm_year + 1900, local.tm_mon + 1, local.tm_mday);-
996 *localTime = QTime(local.tm_hour, local.tm_min, local.tm_sec, msec);-
997 if (daylightStatus) {-
998 if (local.tm_isdst > 0)-
999 *daylightStatus = QDateTimePrivate::DaylightTime;-
1000 else if (local.tm_isdst < 0)-
1001 *daylightStatus = QDateTimePrivate::UnknownDaylightTime;-
1002 else-
1003 *daylightStatus = QDateTimePrivate::StandardTime;-
1004 }-
1005 return true;-
1006 } else {-
1007 *localDate = QDate();-
1008 *localTime = QTime();-
1009 if (daylightStatus)-
1010 *daylightStatus = QDateTimePrivate::UnknownDaylightTime;-
1011 return false;-
1012 }-
1013}-
1014-
1015-
1016static void msecsToTime(qint64 msecs, QDate *date, QTime *time)-
1017{-
1018 qint64 jd = JULIAN_DAY_FOR_EPOCH;-
1019 qint64 ds = 0;-
1020-
1021 if (qAbs(msecs) >= MSECS_PER_DAY) {-
1022 jd += (msecs / MSECS_PER_DAY);-
1023 msecs %= MSECS_PER_DAY;-
1024 }-
1025-
1026 if (msecs < 0) {-
1027 ds = MSECS_PER_DAY - msecs - 1;-
1028 jd -= ds / MSECS_PER_DAY;-
1029 ds = ds % MSECS_PER_DAY;-
1030 ds = MSECS_PER_DAY - ds - 1;-
1031 } else {-
1032 ds = msecs;-
1033 }-
1034-
1035 if (date)-
1036 *date = QDate::fromJulianDay(jd);-
1037 if (time)-
1038 *time = QTime::fromMSecsSinceStartOfDay(ds);-
1039}-
1040-
1041-
1042static qint64 timeToMSecs(const QDate &date, const QTime &time)-
1043{-
1044 return ((date.toJulianDay() - JULIAN_DAY_FOR_EPOCH) * MSECS_PER_DAY)-
1045 + time.msecsSinceStartOfDay();-
1046}-
1047-
1048-
1049static bool epochMSecsToLocalTime(qint64 msecs, QDate *localDate, QTime *localTime,-
1050 QDateTimePrivate::DaylightStatus *daylightStatus = 0)-
1051{-
1052 if (msecs < 0) {-
1053-
1054-
1055 qt_tzset();-
1056 msecsToTime(msecs - qt_timezone() * 1000, localDate, localTime);-
1057 if (daylightStatus)-
1058 *daylightStatus = QDateTimePrivate::StandardTime;-
1059 return true;-
1060 } else if (msecs > (qint64(TIME_T_MAX) * 1000)) {-
1061-
1062-
1063-
1064-
1065-
1066 QDate utcDate;-
1067 QTime utcTime;-
1068 msecsToTime(msecs, &utcDate, &utcTime);-
1069 int year, month, day;-
1070 utcDate.getDate(&year, &month, &day);-
1071-
1072 if (month == 2 && day == 29)-
1073 --day;-
1074 QDate fakeDate(2037, month, day);-
1075 qint64 fakeMsecs = QDateTime(fakeDate, utcTime, Qt::UTC).toMSecsSinceEpoch();-
1076 bool res = qt_localtime(fakeMsecs, localDate, localTime, daylightStatus);-
1077 *localDate = localDate->addDays(fakeDate.daysTo(utcDate));-
1078 return res;-
1079 } else {-
1080-
1081 return qt_localtime(msecs, localDate, localTime, daylightStatus);-
1082 }-
1083}-
1084-
1085-
1086-
1087-
1088static qint64 localMSecsToEpochMSecs(qint64 localMsecs,-
1089 QDateTimePrivate::DaylightStatus *daylightStatus,-
1090 QDate *localDate = 0, QTime *localTime = 0,-
1091 QString *abbreviation = 0)-
1092{-
1093 QDate dt;-
1094 QTime tm;-
1095 msecsToTime(localMsecs, &dt, &tm);-
1096-
1097 const qint64 msecsMax = qint64(TIME_T_MAX) * 1000;-
1098-
1099 if (localMsecs <= qint64(MSECS_PER_DAY)) {-
1100-
1101-
1102-
1103-
1104-
1105 if (localMsecs >= -qint64(MSECS_PER_DAY)) {-
1106 bool valid;-
1107 qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid);-
1108 if (valid && utcMsecs >= 0) {-
1109-
1110 if (localDate)-
1111 *localDate = dt;-
1112 if (localTime)-
1113 *localTime = tm;-
1114 return utcMsecs;-
1115 }-
1116 } else {-
1117-
1118 qt_tzset();-
1119 }-
1120-
1121 qint64 utcMsecs = localMsecs + qt_timezone() * 1000;-
1122 if (localDate || localTime)-
1123 msecsToTime(localMsecs, localDate, localTime);-
1124 if (daylightStatus)-
1125 *daylightStatus = QDateTimePrivate::StandardTime;-
1126 if (abbreviation)-
1127 *abbreviation = qt_tzname(QDateTimePrivate::StandardTime);-
1128 return utcMsecs;-
1129-
1130 } else if (localMsecs >= msecsMax - MSECS_PER_DAY) {-
1131-
1132-
1133-
1134-
1135-
1136-
1137 if (localMsecs <= msecsMax + MSECS_PER_DAY) {-
1138 bool valid;-
1139 qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation, &valid);-
1140 if (valid && utcMsecs <= msecsMax) {-
1141-
1142 if (localDate)-
1143 *localDate = dt;-
1144 if (localTime)-
1145 *localTime = tm;-
1146 return utcMsecs;-
1147 }-
1148 }-
1149-
1150-
1151-
1152 int year, month, day;-
1153 dt.getDate(&year, &month, &day);-
1154-
1155 if (month == 2 && day == 29)-
1156 --day;-
1157 QDate fakeDate(2037, month, day);-
1158 qint64 fakeDiff = fakeDate.daysTo(dt);-
1159 qint64 utcMsecs = qt_mktime(&fakeDate, &tm, daylightStatus, abbreviation);-
1160 if (localDate)-
1161 *localDate = fakeDate.addDays(fakeDiff);-
1162 if (localTime)-
1163 *localTime = tm;-
1164 QDate utcDate;-
1165 QTime utcTime;-
1166 msecsToTime(utcMsecs, &utcDate, &utcTime);-
1167 utcDate = utcDate.addDays(fakeDiff);-
1168 utcMsecs = timeToMSecs(utcDate, utcTime);-
1169 return utcMsecs;-
1170-
1171 } else {-
1172-
1173-
1174 qint64 utcMsecs = qt_mktime(&dt, &tm, daylightStatus, abbreviation);-
1175 if (localDate)-
1176 *localDate = dt;-
1177 if (localTime)-
1178 *localTime = tm;-
1179 return utcMsecs;-
1180-
1181 }-
1182}-
1183-
1184-
1185-
1186-
1187-
1188QDateTimePrivate::QDateTimePrivate(const QDate &toDate, const QTime &toTime, Qt::TimeSpec toSpec,-
1189 int offsetSeconds)-
1190 : m_msecs(0),-
1191 m_spec(Qt::LocalTime),-
1192 m_offsetFromUtc(0),-
1193 m_status(0)-
1194{-
1195 setTimeSpec(toSpec, offsetSeconds);-
1196 setDateTime(toDate, toTime);-
1197}-
1198-
1199-
1200QDateTimePrivate::QDateTimePrivate(const QDate &toDate, const QTime &toTime,-
1201 const QTimeZone &toTimeZone)-
1202 : m_spec(Qt::TimeZone),-
1203 m_offsetFromUtc(0),-
1204 m_timeZone(toTimeZone),-
1205 m_status(0)-
1206{-
1207 setDateTime(toDate, toTime);-
1208}-
1209-
1210-
1211void QDateTimePrivate::setTimeSpec(Qt::TimeSpec spec, int offsetSeconds)-
1212{-
1213 clearValidDateTime();-
1214 clearSetToDaylightStatus();-
1215-
1216-
1217 m_timeZone = QTimeZone();-
1218-
1219-
1220 switch (spec) {-
1221 case Qt::OffsetFromUTC:-
1222 if (offsetSeconds == 0) {-
1223 m_spec = Qt::UTC;-
1224 m_offsetFromUtc = 0;-
1225 } else {-
1226 m_spec = Qt::OffsetFromUTC;-
1227 m_offsetFromUtc = offsetSeconds;-
1228 }-
1229 break;-
1230 case Qt::TimeZone:-
1231-
1232 m_spec = Qt::LocalTime;-
1233 m_offsetFromUtc = 0;-
1234 break;-
1235 case Qt::UTC:-
1236 case Qt::LocalTime:-
1237 m_spec = spec;-
1238 m_offsetFromUtc = 0;-
1239 break;-
1240 }-
1241}-
1242-
1243void QDateTimePrivate::setDateTime(const QDate &date, const QTime &time)-
1244{-
1245-
1246 QTime useTime = time;-
1247 if (!useTime.isValid() && date.isValid())-
1248 useTime = QTime::fromMSecsSinceStartOfDay(0);-
1249-
1250 StatusFlags newStatus;-
1251-
1252-
1253 qint64 days = 0;-
1254 if (date.isValid()) {-
1255 days = date.toJulianDay() - JULIAN_DAY_FOR_EPOCH;-
1256 newStatus = ValidDate;-
1257 } else if (date.isNull()) {-
1258 newStatus = NullDate;-
1259 }-
1260-
1261-
1262 int ds = 0;-
1263 if (useTime.isValid()) {-
1264 ds = useTime.msecsSinceStartOfDay();-
1265 newStatus |= ValidTime;-
1266 } else if (time.isNull()) {-
1267 newStatus |= NullTime;-
1268 }-
1269-
1270-
1271 m_msecs = (days * MSECS_PER_DAY) + ds;-
1272 m_status = newStatus;-
1273-
1274-
1275 checkValidDateTime();-
1276}-
1277-
1278QPair<QDate, QTime> QDateTimePrivate::getDateTime() const-
1279{-
1280 QPair<QDate, QTime> result;-
1281 msecsToTime(m_msecs, &result.first, &result.second);-
1282-
1283 if (isNullDate())-
1284 result.first = QDate();-
1285-
1286 if (isNullTime())-
1287 result.second = QTime();-
1288-
1289 return result;-
1290}-
1291-
1292-
1293void QDateTimePrivate::setDaylightStatus(QDateTimePrivate::DaylightStatus status)-
1294{-
1295 if (status == DaylightTime) {-
1296 m_status = m_status & ~SetToStandardTime;-
1297 m_status = m_status | SetToDaylightTime;-
1298 } else if (status == StandardTime) {-
1299 m_status = m_status & ~SetToDaylightTime;-
1300 m_status = m_status | SetToStandardTime;-
1301 } else {-
1302 clearSetToDaylightStatus();-
1303 }-
1304}-
1305-
1306-
1307QDateTimePrivate::DaylightStatus QDateTimePrivate::daylightStatus() const-
1308{-
1309 if ((m_status & SetToDaylightTime) == SetToDaylightTime)-
1310 return DaylightTime;-
1311 if ((m_status & SetToStandardTime) == SetToStandardTime)-
1312 return StandardTime;-
1313 return UnknownDaylightTime;-
1314}-
1315-
1316qint64 QDateTimePrivate::toMSecsSinceEpoch() const-
1317{-
1318 switch (m_spec) {-
1319 case Qt::OffsetFromUTC:-
1320 case Qt::UTC:-
1321 return (m_msecs - (m_offsetFromUtc * 1000));-
1322-
1323 case Qt::LocalTime: {-
1324-
1325 DaylightStatus status = daylightStatus();-
1326 return localMSecsToEpochMSecs(m_msecs, &status);-
1327 }-
1328-
1329 case Qt::TimeZone:-
1330-
1331-
1332-
1333 return zoneMSecsToEpochMSecs(m_msecs, m_timeZone);-
1334-
1335 }-
1336 do { ((!(false)) ? qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached",__FILE__,27132736) : qt_noop()); __builtin_unreachable(); } while (0);-
1337 return 0;-
1338}-
1339-
1340-
1341void QDateTimePrivate::checkValidDateTime()-
1342{-
1343 switch (m_spec) {-
1344 case Qt::OffsetFromUTC:-
1345 case Qt::UTC:-
1346-
1347 if (isValidDate() && isValidTime())-
1348 setValidDateTime();-
1349 else-
1350 clearValidDateTime();-
1351 break;-
1352 case Qt::TimeZone:-
1353 case Qt::LocalTime:-
1354-
1355-
1356 refreshDateTime();-
1357 break;-
1358 }-
1359}-
1360-
1361-
1362void QDateTimePrivate::refreshDateTime()-
1363{-
1364 switch (m_spec) {-
1365 case Qt::OffsetFromUTC:-
1366 case Qt::UTC:-
1367-
1368 return;-
1369 case Qt::TimeZone:-
1370 case Qt::LocalTime:-
1371 break;-
1372 }-
1373-
1374-
1375 if (!isValidDate() || !isValidTime()) {-
1376 clearValidDateTime();-
1377 m_offsetFromUtc = 0;-
1378 return;-
1379 }-
1380-
1381-
1382-
1383 if (m_spec == Qt::TimeZone && !m_timeZone.isValid()) {-
1384 clearValidDateTime();-
1385 m_offsetFromUtc = 0;-
1386 return;-
1387 }-
1388-
1389-
1390-
1391-
1392-
1393 QDate testDate;-
1394 QTime testTime;-
1395 qint64 epochMSecs = 0;-
1396 if (m_spec == Qt::LocalTime) {-
1397 DaylightStatus status = daylightStatus();-
1398 epochMSecs = localMSecsToEpochMSecs(m_msecs, &status, &testDate, &testTime);-
1399-
1400 } else {-
1401 epochMSecs = zoneMSecsToEpochMSecs(m_msecs, m_timeZone, &testDate, &testTime);-
1402-
1403 }-
1404 if (timeToMSecs(testDate, testTime) == m_msecs) {-
1405 setValidDateTime();-
1406-
1407 m_offsetFromUtc = (m_msecs - epochMSecs) / 1000;-
1408 } else {-
1409 clearValidDateTime();-
1410 m_offsetFromUtc = 0;-
1411 }-
1412}-
1413-
1414-
1415-
1416qint64 QDateTimePrivate::zoneMSecsToEpochMSecs(qint64 zoneMSecs, const QTimeZone &zone,-
1417 QDate *localDate, QTime *localTime)-
1418{-
1419-
1420 QTimeZonePrivate::Data data = zone.d->dataForLocalTime(zoneMSecs);-
1421-
1422-
1423 if (data.atMSecsSinceEpoch >= 0) {-
1424 msecsToTime(data.atMSecsSinceEpoch + (data.offsetFromUtc * 1000), localDate, localTime);-
1425 return data.atMSecsSinceEpoch;-
1426 } else {-
1427 msecsToTime(zoneMSecs, localDate, localTime);-
1428 return zoneMSecs - (data.standardTimeOffset * 1000);-
1429 }-
1430}-
1431QDateTime::QDateTime()-
1432 : d(new QDateTimePrivate)(*defaultDateTimePrivate())-
1433{-
1434}
executed 7103614 times by 127 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractFileEngine
  • tst_QAbstractItemView
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAsn1Element
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QButtonGroup
  • tst_QCalendarWidget
  • tst_QColorDialog
  • tst_QComboBox
  • tst_QCommandLinkButton
  • tst_QCompleter
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDBusMarshall
  • tst_QDBusMetaType
  • tst_QDataStream
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDebug
  • ...
7103614
1435-
1436-
1437-
1438-
1439-
1440-
1441-
1442QDateTime::QDateTime(const QDate &date)-
1443 : d(new QDateTimePrivate(date, QTime(0, 0, 0), Qt::LocalTime, 0))-
1444{-
1445}-
1446QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec)-
1447 : d(new QDateTimePrivate(date, time, spec, 0))-
1448{-
1449}-
1450QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds)-
1451 : d(new QDateTimePrivate(date, time, spec, offsetSeconds))-
1452{-
1453}-
1454QDateTime::QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone)-
1455 : d(new QDateTimePrivate(date, time, timeZone))-
1456{-
1457}-
1458-
1459-
1460-
1461-
1462-
1463-
1464QDateTime::QDateTime(const QDateTime &other)-
1465 : d(other.d)-
1466{-
1467}-
1468-
1469-
1470-
1471-
1472QDateTime::~QDateTime()-
1473{-
1474}-
1475-
1476-
1477-
1478-
1479-
1480-
1481QDateTime &QDateTime::operator=(const QDateTime &other)-
1482{-
1483 d = other.d;-
1484 return *this;-
1485}-
1486bool QDateTime::isNull() const-
1487{-
1488 return d->isNullDate() && d->isNullTime();-
1489}-
1490bool QDateTime::isValid() const-
1491{-
1492 return (d->isValidDateTime());-
1493}-
1494-
1495-
1496-
1497-
1498-
1499-
1500-
1501QDate QDateTime::date() const-
1502{-
1503 if (d->isNullDate())-
1504 return QDate();-
1505 QDate dt;-
1506 msecsToTime(d->m_msecs, &dt, 0);-
1507 return dt;-
1508}-
1509-
1510-
1511-
1512-
1513-
1514-
1515-
1516QTime QDateTime::time() const-
1517{-
1518 if (d->isNullTime())-
1519 return QTime();-
1520 QTime tm;-
1521 msecsToTime(d->m_msecs, 0, &tm);-
1522 return tm;-
1523}-
1524-
1525-
1526-
1527-
1528-
1529-
1530-
1531Qt::TimeSpec QDateTime::timeSpec() const-
1532{-
1533 return d->m_spec;-
1534}-
1535QTimeZone QDateTime::timeZone() const-
1536{-
1537 switch (d->m_spec) {-
1538 case Qt::UTC:-
1539 return QTimeZone::utc();-
1540 case Qt::OffsetFromUTC:-
1541 return QTimeZone(d->m_offsetFromUtc);-
1542 case Qt::TimeZone:-
1543 ((!(d->m_timeZone.isValid())) ? qt_assert("d->m_timeZone.isValid()",__FILE__,31473169) : qt_noop());-
1544 return d->m_timeZone;-
1545 case Qt::LocalTime:-
1546 return QTimeZone::systemTimeZone();-
1547 }-
1548 return QTimeZone();-
1549}-
1550int QDateTime::offsetFromUtc() const-
1551{-
1552 return d->m_offsetFromUtc;-
1553}-
1554QString QDateTime::timeZoneAbbreviation() const-
1555{-
1556 switch (d->m_spec) {-
1557 case Qt::UTC:-
1558 return QTimeZonePrivate::utcQString();-
1559 case Qt::OffsetFromUTC:-
1560 return QTimeZonePrivate::utcQString() + toOffsetString(Qt::ISODate, d->m_offsetFromUtc);-
1561 case Qt::TimeZone:-
1562-
1563-
1564-
1565 return d->m_timeZone.d->abbreviation(d->toMSecsSinceEpoch());-
1566-
1567 case Qt::LocalTime: {-
1568 QString abbrev;-
1569 QDateTimePrivate::DaylightStatus status = d->daylightStatus();-
1570 localMSecsToEpochMSecs(d->m_msecs, &status, 0, 0, &abbrev);-
1571 return abbrev;-
1572 }-
1573 }-
1574 return QString();-
1575}-
1576bool QDateTime::isDaylightTime() const-
1577{-
1578 switch (d->m_spec) {-
1579 case Qt::UTC:-
1580 case Qt::OffsetFromUTC:-
1581 return false;-
1582 case Qt::TimeZone:-
1583-
1584-
1585-
1586 return d->m_timeZone.d->isDaylightTime(toMSecsSinceEpoch());-
1587-
1588 case Qt::LocalTime: {-
1589 QDateTimePrivate::DaylightStatus status = d->daylightStatus();-
1590 if (status == QDateTimePrivate::UnknownDaylightTime)-
1591 localMSecsToEpochMSecs(d->m_msecs, &status);-
1592 return (status == QDateTimePrivate::DaylightTime);-
1593 }-
1594 }-
1595 return false;-
1596}-
1597void QDateTime::setDate(const QDate &date)-
1598{-
1599 d->setDateTime(date, time());-
1600}-
1601void QDateTime::setTime(const QTime &time)-
1602{-
1603 d->setDateTime(date(), time);-
1604}-
1605void QDateTime::setTimeSpec(Qt::TimeSpec spec)-
1606{-
1607 QDateTimePrivate *d = this->d.data();-
1608 d->setTimeSpec(spec, 0);-
1609 d->checkValidDateTime();-
1610}-
1611void QDateTime::setOffsetFromUtc(int offsetSeconds)-
1612{-
1613 QDateTimePrivate *d = this->d.data();-
1614 d->setTimeSpec(Qt::OffsetFromUTC, offsetSeconds);-
1615 d->checkValidDateTime();-
1616}-
1617void QDateTime::setTimeZone(const QTimeZone &toZone)-
1618{-
1619 QDateTimePrivate *d = this->d.data();-
1620 d->m_spec = Qt::TimeZone;-
1621 d->m_offsetFromUtc = 0;-
1622 d->m_timeZone = toZone;-
1623 d->refreshDateTime();-
1624}-
1625qint64 QDateTime::toMSecsSinceEpoch() const-
1626{-
1627 return d->toMSecsSinceEpoch();-
1628}-
1629uint QDateTime::toTime_t() const-
1630{-
1631 if (!isValid())-
1632 return uint(-1);-
1633 qint64 retval = d->toMSecsSinceEpoch() / 1000;-
1634 if (quint64(retval) >= static_cast<unsigned long long>(0xFFFFFFFFULL))-
1635 return uint(-1);-
1636 return uint(retval);-
1637}-
1638void QDateTime::setMSecsSinceEpoch(qint64 msecs)-
1639{-
1640 QDateTimePrivate *d = this->d.data();-
1641-
1642 d->m_status = 0;-
1643 switch (d->m_spec) {-
1644 case Qt::UTC:-
1645 d->m_msecs = msecs;-
1646 d->m_status = d->m_status-
1647 | QDateTimePrivate::ValidDate-
1648 | QDateTimePrivate::ValidTime-
1649 | QDateTimePrivate::ValidDateTime;-
1650 break;-
1651 case Qt::OffsetFromUTC:-
1652 d->m_msecs = msecs + (d->m_offsetFromUtc * 1000);-
1653 d->m_status = d->m_status-
1654 | QDateTimePrivate::ValidDate-
1655 | QDateTimePrivate::ValidTime-
1656 | QDateTimePrivate::ValidDateTime;-
1657 break;-
1658 case Qt::TimeZone:-
1659-
1660-
1661-
1662 if (msecs >= 0)-
1663 d->m_offsetFromUtc = d->m_timeZone.d->offsetFromUtc(msecs);-
1664 else-
1665 d->m_offsetFromUtc = d->m_timeZone.d->standardTimeOffset(msecs);-
1666 d->m_msecs = msecs + (d->m_offsetFromUtc * 1000);-
1667 d->m_status = d->m_status-
1668 | QDateTimePrivate::ValidDate-
1669 | QDateTimePrivate::ValidTime-
1670 | QDateTimePrivate::ValidDateTime;-
1671 d->refreshDateTime();-
1672-
1673 break;-
1674 case Qt::LocalTime: {-
1675 QDate dt;-
1676 QTime tm;-
1677 QDateTimePrivate::DaylightStatus status;-
1678 epochMSecsToLocalTime(msecs, &dt, &tm, &status);-
1679 d->setDateTime(dt, tm);-
1680 d->setDaylightStatus(status);-
1681 d->refreshDateTime();-
1682 break;-
1683 }-
1684 }-
1685}-
1686void QDateTime::setTime_t(uint secsSince1Jan1970UTC)-
1687{-
1688 setMSecsSinceEpoch((qint64)secsSince1Jan1970UTC * 1000);-
1689}-
1690QString QDateTime::toString(Qt::DateFormat format) const-
1691{-
1692 QString buf;-
1693 if (!isValid()
!isValid()Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 3156 times by 13 tests
Evaluated by:
  • tst_QCompleter
  • tst_QDate
  • tst_QDateTime
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QGraphicsProxyWidget
  • tst_QItemModel
  • tst_QNetworkRequest
  • tst_QSqlTableModel
  • tst_QVariant
  • tst_languageChange
  • tst_qmakelib
)
2-3156
1694 return
executed 2 times by 1 test: return buf;
Executed by:
  • tst_QDateTime
buf;
executed 2 times by 1 test: return buf;
Executed by:
  • tst_QDateTime
2
1695-
1696 switch (format) {-
1697 case
executed 2721 times by 8 tests: case Qt::SystemLocaleDate:
Executed by:
  • tst_QCompleter
  • tst_QDateTime
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QGraphicsProxyWidget
  • tst_QItemModel
  • tst_languageChange
Qt::SystemLocaleDate:
executed 2721 times by 8 tests: case Qt::SystemLocaleDate:
Executed by:
  • tst_QCompleter
  • tst_QDateTime
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QGraphicsProxyWidget
  • tst_QItemModel
  • tst_languageChange
2721
1698 case
executed 1 time by 1 test: case Qt::SystemLocaleShortDate:
Executed by:
  • tst_QDateTime
Qt::SystemLocaleShortDate:
executed 1 time by 1 test: case Qt::SystemLocaleShortDate:
Executed by:
  • tst_QDateTime
1
1699 return
executed 2722 times by 8 tests: return QLocale::system().toString(*this, QLocale::ShortFormat);
Executed by:
  • tst_QCompleter
  • tst_QDateTime
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QGraphicsProxyWidget
  • tst_QItemModel
  • tst_languageChange
QLocale::system().toString(*this, QLocale::ShortFormat);
executed 2722 times by 8 tests: return QLocale::system().toString(*this, QLocale::ShortFormat);
Executed by:
  • tst_QCompleter
  • tst_QDateTime
  • tst_QFileDialog2
  • tst_QFileSystemModel
  • tst_QFiledialog
  • tst_QGraphicsProxyWidget
  • tst_QItemModel
  • tst_languageChange
2722
1700 case
executed 1 time by 1 test: case Qt::SystemLocaleLongDate:
Executed by:
  • tst_QDateTime
Qt::SystemLocaleLongDate:
executed 1 time by 1 test: case Qt::SystemLocaleLongDate:
Executed by:
  • tst_QDateTime
1
1701 return
executed 1 time by 1 test: return QLocale::system().toString(*this, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
QLocale::system().toString(*this, QLocale::LongFormat);
executed 1 time by 1 test: return QLocale::system().toString(*this, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
1
1702 case
executed 1 time by 1 test: case Qt::LocaleDate:
Executed by:
  • tst_QDateTime
Qt::LocaleDate:
executed 1 time by 1 test: case Qt::LocaleDate:
Executed by:
  • tst_QDateTime
1
1703 case
executed 1 time by 1 test: case Qt::DefaultLocaleShortDate:
Executed by:
  • tst_QDateTime
Qt::DefaultLocaleShortDate:
executed 1 time by 1 test: case Qt::DefaultLocaleShortDate:
Executed by:
  • tst_QDateTime
1
1704 return
executed 2 times by 1 test: return QLocale().toString(*this, QLocale::ShortFormat);
Executed by:
  • tst_QDateTime
QLocale().toString(*this, QLocale::ShortFormat);
executed 2 times by 1 test: return QLocale().toString(*this, QLocale::ShortFormat);
Executed by:
  • tst_QDateTime
2
1705 case
executed 1 time by 1 test: case Qt::DefaultLocaleLongDate:
Executed by:
  • tst_QDateTime
Qt::DefaultLocaleLongDate:
executed 1 time by 1 test: case Qt::DefaultLocaleLongDate:
Executed by:
  • tst_QDateTime
1
1706 return
executed 1 time by 1 test: return QLocale().toString(*this, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
QLocale().toString(*this, QLocale::LongFormat);
executed 1 time by 1 test: return QLocale().toString(*this, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
1
1707 case
executed 5 times by 1 test: case Qt::RFC2822Date:
Executed by:
  • tst_QDateTime
Qt::RFC2822Date:
executed 5 times by 1 test: case Qt::RFC2822Date:
Executed by:
  • tst_QDateTime
{
5
1708 buf = QLocale::c().toString(*this, ([]() -> QString { enum { Size = sizeof(u"" "dd MMM yyyy hh:mm:ss ")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "dd MMM yyyy hh:mm:ss " }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()));-
1709 buf += toOffsetString(Qt::TextDate, d->m_offsetFromUtc);-
1710 return
executed 5 times by 1 test: return buf;
Executed by:
  • tst_QDateTime
buf;
executed 5 times by 1 test: return buf;
Executed by:
  • tst_QDateTime
5
1711 }-
1712 default
never executed: default:
:
never executed: default:
0
1713-
1714 case
executed 399 times by 3 tests: case Qt::TextDate:
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_qmakelib
Qt::TextDate:
executed 399 times by 3 tests: case Qt::TextDate:
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_qmakelib
{
399
1715 const QPair<QDate, QTime> p = d->getDateTime();-
1716 const QDate &dt = p.first;-
1717 const QTime &tm = p.second;-
1718-
1719 buf = QString::fromLatin1("%1 %2 %3 %4 %5").arg(dt.shortDayName(dt.dayOfWeek()))-
1720 .arg(dt.shortMonthName(dt.month()))-
1721 .arg(dt.day())-
1722 .arg(tm.toString(Qt::TextDate))-
1723 .arg(dt.year());-
1724 if (timeSpec() != Qt::LocalTime
timeSpec() != Qt::LocalTimeDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 396 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_qmakelib
) {
3-396
1725 buf += ([]() -> QString { enum { Size = sizeof(u"" " GMT")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeofQLatin1String(QStringData) }, u"" " GMT"}; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder);-
1726 return qstring_literal_temp; }());if (d->m_spec == Qt::OffsetFromUTC
d->m_spec == Qt::OffsetFromUTCDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
)
1-2
1727 buf += toOffsetString(Qt::TextDate, d->m_offsetFromUtc);
executed 2 times by 1 test: buf += toOffsetString(Qt::TextDate, d->m_offsetFromUtc);
Executed by:
  • tst_QDateTime
2
1728 }
executed 3 times by 1 test: end of block
Executed by:
  • tst_QDateTime
3
1729 return
executed 399 times by 3 tests: return buf;
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_qmakelib
buf;
executed 399 times by 3 tests: return buf;
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_qmakelib
399
1730 }-
1731-
1732 case
executed 26 times by 4 tests: case Qt::ISODate:
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
  • tst_QSqlTableModel
  • tst_QVariant
Qt::ISODate:
executed 26 times by 4 tests: case Qt::ISODate:
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
  • tst_QSqlTableModel
  • tst_QVariant
{
26
1733 const QPair<QDate, QTime> p = d->getDateTime();-
1734 const QDate &dt = p.first;-
1735 const QTime &tm = p.second;-
1736 buf = dt.toString(Qt::ISODate);-
1737 if (buf.isEmpty()
buf.isEmpty()Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 25 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkRequest
  • tst_QSqlTableModel
  • tst_QVariant
)
1-25
1738 return
executed 1 time by 1 test: return QString();
Executed by:
  • tst_QDateTime
QString();
executed 1 time by 1 test: return QString();
Executed by:
  • tst_QDateTime
1
1739 buf += QLatin1Char('T');-
1740 buf += tm.toString(Qt::ISODate);-
1741 switch (d->m_spec) {-
1742 case
executed 9 times by 2 tests: case Qt::UTC:
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
Qt::UTC:
executed 9 times by 2 tests: case Qt::UTC:
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
9
1743 buf += QLatin1Char('Z');-
1744 break;
executed 9 times by 2 tests: break;
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
9
1745 case
executed 3 times by 1 test: case Qt::OffsetFromUTC:
Executed by:
  • tst_QDateTime
Qt::OffsetFromUTC:
executed 3 times by 1 test: case Qt::OffsetFromUTC:
Executed by:
  • tst_QDateTime
3
1746 buf += toOffsetString(Qt::ISODate, d->m_offsetFromUtc);-
1747 break;
executed 3 times by 1 test: break;
Executed by:
  • tst_QDateTime
3
1748 default
executed 13 times by 3 tests: default:
Executed by:
  • tst_QDateTime
  • tst_QSqlTableModel
  • tst_QVariant
:
executed 13 times by 3 tests: default:
Executed by:
  • tst_QDateTime
  • tst_QSqlTableModel
  • tst_QVariant
13
1749 break;
executed 13 times by 3 tests: break;
Executed by:
  • tst_QDateTime
  • tst_QSqlTableModel
  • tst_QVariant
13
1750 }-
1751 return
executed 25 times by 4 tests: return buf;
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
  • tst_QSqlTableModel
  • tst_QVariant
buf;
executed 25 times by 4 tests: return buf;
Executed by:
  • tst_QDateTime
  • tst_QNetworkRequest
  • tst_QSqlTableModel
  • tst_QVariant
25
1752 }-
1753 }-
1754}-
1755QString QDateTime::toString(const QString& format) const-
1756{-
1757 return QLocale::system().toString(*this, format);-
1758}-
1759-
1760-
1761static void massageAdjustedDateTime(Qt::TimeSpec spec,-
1762-
1763 const QTimeZone &zone,-
1764-
1765 QDate *date,-
1766 QTime *time)-
1767{-
1768 if (spec == Qt::LocalTime) {-
1769 QDateTimePrivate::DaylightStatus status = QDateTimePrivate::UnknownDaylightTime;-
1770 localMSecsToEpochMSecs(timeToMSecs(*date, *time), &status, date, time);-
1771-
1772 } else if (spec == Qt::TimeZone) {-
1773 QDateTimePrivate::zoneMSecsToEpochMSecs(timeToMSecs(*date, *time), zone, date, time);-
1774-
1775 }-
1776}-
1777QDateTime QDateTime::addDays(qint64 ndays) const-
1778{-
1779 QDateTime dt(*this);-
1780 QPair<QDate, QTime> p = d->getDateTime();-
1781 QDate &date = p.first;-
1782 QTime &time = p.second;-
1783 date = date.addDays(ndays);-
1784 massageAdjustedDateTime(d->m_spec, d->m_timeZone, &date, &time);-
1785 dt.d->setDateTime(date, time);-
1786 return dt;-
1787}-
1788QDateTime QDateTime::addMonths(int nmonths) const-
1789{-
1790 QDateTime dt(*this);-
1791 QPair<QDate, QTime> p = d->getDateTime();-
1792 QDate &date = p.first;-
1793 QTime &time = p.second;-
1794 date = date.addMonths(nmonths);-
1795 massageAdjustedDateTime(d->m_spec, d->m_timeZone, &date, &time);-
1796 dt.d->setDateTime(date, time);-
1797 return dt;-
1798}-
1799QDateTime QDateTime::addYears(int nyears) const-
1800{-
1801 QDateTime dt(*this);-
1802 QPair<QDate, QTime> p = d->getDateTime();-
1803 QDate &date = p.first;-
1804 QTime &time = p.second;-
1805 date = date.addYears(nyears);-
1806 massageAdjustedDateTime(d->m_spec, d->m_timeZone, &date, &time);-
1807 dt.d->setDateTime(date, time);-
1808 return dt;-
1809}-
1810QDateTime QDateTime::addSecs(qint64 s) const-
1811{-
1812 return addMSecs(s * 1000);-
1813}-
1814QDateTime QDateTime::addMSecs(qint64 msecs) const-
1815{-
1816 if (!isValid())-
1817 return QDateTime();-
1818-
1819 QDateTime dt(*this);-
1820 if (d->m_spec == Qt::LocalTime || d->m_spec == Qt::TimeZone)-
1821-
1822 dt.setMSecsSinceEpoch(d->toMSecsSinceEpoch() + msecs);-
1823 else-
1824-
1825 dt.d->m_msecs = dt.d->m_msecs + msecs;-
1826 return dt;-
1827}-
1828qint64 QDateTime::daysTo(const QDateTime &other) const-
1829{-
1830 return date().daysTo(other.date());-
1831}-
1832qint64 QDateTime::secsTo(const QDateTime &other) const-
1833{-
1834 return (msecsTo(other) / 1000);-
1835}-
1836qint64 QDateTime::msecsTo(const QDateTime &other) const-
1837{-
1838 if (!isValid() || !other.isValid())-
1839 return 0;-
1840-
1841 return other.d->toMSecsSinceEpoch() - d->toMSecsSinceEpoch();-
1842}-
1843QDateTime QDateTime::toTimeSpec(Qt::TimeSpec spec) const-
1844{-
1845 if (d->m_spec == spec && (spec == Qt::UTC || spec == Qt::LocalTime))-
1846 return *this;-
1847-
1848 if (!isValid()) {-
1849 QDateTime ret = *this;-
1850 ret.setTimeSpec(spec);-
1851 return ret;-
1852 }-
1853-
1854 return fromMSecsSinceEpoch(d->toMSecsSinceEpoch(), spec, 0);-
1855}-
1856QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const-
1857{-
1858 if (d->m_spec == Qt::OffsetFromUTC && d->m_offsetFromUtc == offsetSeconds)-
1859 return *this;-
1860-
1861 if (!isValid()) {-
1862 QDateTime ret = *this;-
1863 ret.setOffsetFromUtc(offsetSeconds);-
1864 return ret;-
1865 }-
1866-
1867 return fromMSecsSinceEpoch(d->toMSecsSinceEpoch(), Qt::OffsetFromUTC, offsetSeconds);-
1868}-
1869QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const-
1870{-
1871 if (d->m_spec == Qt::TimeZone && d->m_timeZone == timeZone)-
1872 return *this;-
1873-
1874 if (!isValid()) {-
1875 QDateTime ret = *this;-
1876 ret.setTimeZone(timeZone);-
1877 return ret;-
1878 }-
1879-
1880 return fromMSecsSinceEpoch(d->toMSecsSinceEpoch(), timeZone);-
1881}-
1882bool QDateTime::operator==(const QDateTime &other) const-
1883{-
1884 if (d->m_spec == Qt::LocalTime-
1885 && other.d->m_spec == Qt::LocalTime-
1886 && d->m_status == other.d->m_status) {-
1887 return (d->m_msecs == other.d->m_msecs);-
1888 }-
1889-
1890 return (toMSecsSinceEpoch() == other.toMSecsSinceEpoch());-
1891}-
1892bool QDateTime::operator<(const QDateTime &other) const-
1893{-
1894 if (d->m_spec == Qt::LocalTime-
1895 && other.d->m_spec == Qt::LocalTime-
1896 && d->m_status == other.d->m_status) {-
1897 return (d->m_msecs < other.d->m_msecs);-
1898 }-
1899-
1900 return (toMSecsSinceEpoch() < other.toMSecsSinceEpoch());-
1901}-
1902QDate QDate::currentDate()-
1903{-
1904 return QDateTime::currentDateTime().date();-
1905}-
1906-
1907QTime QTime::currentTime()-
1908{-
1909 return QDateTime::currentDateTime().time();-
1910}-
1911-
1912QDateTime QDateTime::currentDateTime()-
1913{-
1914 return fromMSecsSinceEpoch(currentMSecsSinceEpoch(), Qt::LocalTime);-
1915}-
1916-
1917QDateTime QDateTime::currentDateTimeUtc()-
1918{-
1919 return fromMSecsSinceEpoch(currentMSecsSinceEpoch(), Qt::UTC);-
1920}-
1921-
1922qint64 QDateTime::currentMSecsSinceEpoch() noexcept-
1923{-
1924-
1925-
1926 struct timeval tv;-
1927 gettimeofday(&tv, 0);-
1928 return
executed 6948773 times by 70 tests: return qint64(tv.tv_sec) * static_cast<long long>(1000LL) + tv.tv_usec / 1000;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QFile
  • tst_QFileInfo
  • tst_QFtp
  • tst_QFutureWatcher
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QHttpSocketEngine
  • tst_QItemDelegate
  • tst_QLabel
  • tst_QLocalSocket
  • ...
qint64(tv.tv_sec) * static_cast<long long>(1000LL) + tv.tv_usec / 1000;
executed 6948773 times by 70 tests: return qint64(tv.tv_sec) * static_cast<long long>(1000LL) + tv.tv_usec / 1000;
Executed by:
  • tst_NetworkSelfTest
  • tst_PlatformSocketEngine
  • tst_QAbstractNetworkCache
  • tst_QAbstractSlider
  • tst_QAccessibility
  • tst_QAtomicInt
  • tst_QAuthenticator
  • tst_QCalendarWidget
  • tst_QCoreApplication
  • tst_QDBusAbstractAdaptor
  • tst_QDate
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QDnsLookup
  • tst_QDnsLookup_Appless
  • tst_QFile
  • tst_QFileInfo
  • tst_QFtp
  • tst_QFutureWatcher
  • tst_QGuiApplication
  • tst_QHttpNetworkConnection
  • tst_QHttpSocketEngine
  • tst_QItemDelegate
  • tst_QLabel
  • tst_QLocalSocket
  • ...
6948773
1929}-
1930QDateTime QDateTime::fromTime_t(uint seconds)-
1931{-
1932 return fromMSecsSinceEpoch((qint64)seconds * 1000, Qt::LocalTime);-
1933}-
1934QDateTime QDateTime::fromTime_t(uint seconds, Qt::TimeSpec spec, int offsetSeconds)-
1935{-
1936 return fromMSecsSinceEpoch((qint64)seconds * 1000, spec, offsetSeconds);-
1937}-
1938QDateTime QDateTime::fromTime_t(uint seconds, const QTimeZone &timeZone)-
1939{-
1940 return fromMSecsSinceEpoch((qint64)seconds * 1000, timeZone);-
1941}-
1942QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)-
1943{-
1944 return fromMSecsSinceEpoch(msecs, Qt::LocalTime);-
1945}-
1946QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds)-
1947{-
1948 QDateTime dt;-
1949 dt.d->setTimeSpec(spec, offsetSeconds);-
1950 dt.setMSecsSinceEpoch(msecs);-
1951 return dt;-
1952}-
1953QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)-
1954{-
1955 QDateTime dt;-
1956 dt.setTimeZone(timeZone);-
1957 dt.setMSecsSinceEpoch(msecs);-
1958 return dt;-
1959}-
1960void QDateTime::setUtcOffset(int seconds)-
1961{-
1962 setOffsetFromUtc(seconds);-
1963}-
1964int QDateTime::utcOffset() const-
1965{-
1966 return offsetFromUtc();-
1967}-
1968QDateTime QDateTime::fromString(const QString& string, Qt::DateFormat format)-
1969{-
1970 if (string.isEmpty()
string.isEmpty()Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 144 times by 6 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QNetworkRequest
  • tst_QSqlQuery
  • tst_QVariant
)
5-144
1971 return
executed 5 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 5 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
5
1972-
1973 switch (format) {-
1974 case
executed 1 time by 1 test: case Qt::SystemLocaleDate:
Executed by:
  • tst_QDateTime
Qt::SystemLocaleDate:
executed 1 time by 1 test: case Qt::SystemLocaleDate:
Executed by:
  • tst_QDateTime
1
1975 case
executed 1 time by 1 test: case Qt::SystemLocaleShortDate:
Executed by:
  • tst_QDateTime
Qt::SystemLocaleShortDate:
executed 1 time by 1 test: case Qt::SystemLocaleShortDate:
Executed by:
  • tst_QDateTime
1
1976 return
executed 2 times by 1 test: return QLocale::system().toDateTime(string, QLocale::ShortFormat);
Executed by:
  • tst_QDateTime
QLocale::system().toDateTime(string, QLocale::ShortFormat);
executed 2 times by 1 test: return QLocale::system().toDateTime(string, QLocale::ShortFormat);
Executed by:
  • tst_QDateTime
2
1977 case
executed 1 time by 1 test: case Qt::SystemLocaleLongDate:
Executed by:
  • tst_QDateTime
Qt::SystemLocaleLongDate:
executed 1 time by 1 test: case Qt::SystemLocaleLongDate:
Executed by:
  • tst_QDateTime
1
1978 return
executed 1 time by 1 test: return QLocale::system().toDateTime(string, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
QLocale::system().toDateTime(string, QLocale::LongFormat);
executed 1 time by 1 test: return QLocale::system().toDateTime(string, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
1
1979 case
executed 1 time by 1 test: case Qt::LocaleDate:
Executed by:
  • tst_QDateTime
Qt::LocaleDate:
executed 1 time by 1 test: case Qt::LocaleDate:
Executed by:
  • tst_QDateTime
1
1980 case
executed 1 time by 1 test: case Qt::DefaultLocaleShortDate:
Executed by:
  • tst_QDateTime
Qt::DefaultLocaleShortDate:
executed 1 time by 1 test: case Qt::DefaultLocaleShortDate:
Executed by:
  • tst_QDateTime
1
1981 return
executed 2 times by 1 test: return QLocale().toDateTime(string, QLocale::ShortFormat);
Executed by:
  • tst_QDateTime
QLocale().toDateTime(string, QLocale::ShortFormat);
executed 2 times by 1 test: return QLocale().toDateTime(string, QLocale::ShortFormat);
Executed by:
  • tst_QDateTime
2
1982 case
executed 1 time by 1 test: case Qt::DefaultLocaleLongDate:
Executed by:
  • tst_QDateTime
Qt::DefaultLocaleLongDate:
executed 1 time by 1 test: case Qt::DefaultLocaleLongDate:
Executed by:
  • tst_QDateTime
1
1983 return
executed 1 time by 1 test: return QLocale().toDateTime(string, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
QLocale().toDateTime(string, QLocale::LongFormat);
executed 1 time by 1 test: return QLocale().toDateTime(string, QLocale::LongFormat);
Executed by:
  • tst_QDateTime
1
1984 case
executed 30 times by 1 test: case Qt::RFC2822Date:
Executed by:
  • tst_QDateTime
Qt::RFC2822Date:
executed 30 times by 1 test: case Qt::RFC2822Date:
Executed by:
  • tst_QDateTime
{
30
1985 const ParsedRfcDateTime rfc = rfcDateImpl(string);-
1986-
1987 if (!rfc.date.isValid()
!rfc.date.isValid()Description
TRUEevaluated 11 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 19 times by 1 test
Evaluated by:
  • tst_QDateTime
|| !rfc.time.isValid()
!rfc.time.isValid()Description
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 16 times by 1 test
Evaluated by:
  • tst_QDateTime
)
3-19
1988 return
executed 14 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 14 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
14
1989-
1990 QDateTime dateTime(rfc.date, rfc.time, Qt::UTC);-
1991 dateTime.setOffsetFromUtc(rfc.utcOffset);-
1992 return
executed 16 times by 1 test: return dateTime;
Executed by:
  • tst_QDateTime
dateTime;
executed 16 times by 1 test: return dateTime;
Executed by:
  • tst_QDateTime
16
1993 }-
1994 case
executed 66 times by 4 tests: case Qt::ISODate:
Executed by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
Qt::ISODate:
executed 66 times by 4 tests: case Qt::ISODate:
Executed by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
{
66
1995 const int size = string.size();-
1996 if (size < 10
size < 10Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QVariant
FALSEevaluated 62 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
)
4-62
1997 return
executed 4 times by 1 test: return QDateTime();
Executed by:
  • tst_QVariant
QDateTime();
executed 4 times by 1 test: return QDateTime();
Executed by:
  • tst_QVariant
4
1998-
1999 QStringRef isoString(&string);-
2000 Qt::TimeSpec spec = Qt::LocalTime;-
2001-
2002 QDate date = QDate::fromString(string.left(10), Qt::ISODate);-
2003 if (!date.isValid()
!date.isValid()Description
TRUEevaluated 7 times by 2 tests
Evaluated by:
  • tst_QDateTime
  • tst_QVariant
FALSEevaluated 55 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
)
7-55
2004 return
executed 7 times by 2 tests: return QDateTime();
Executed by:
  • tst_QDateTime
  • tst_QVariant
QDateTime();
executed 7 times by 2 tests: return QDateTime();
Executed by:
  • tst_QDateTime
  • tst_QVariant
7
2005 if (size == 10
size == 10Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 54 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
)
1-54
2006 return
executed 1 time by 1 test: return QDateTime(date);
Executed by:
  • tst_QDateTime
QDateTime(date);
executed 1 time by 1 test: return QDateTime(date);
Executed by:
  • tst_QDateTime
1
2007-
2008 isoString = isoString.right(isoString.length() - 11);-
2009 int offset = 0;-
2010-
2011 if (isoString.endsWith(QLatin1Char('Z'))
isoString.ends...tin1Char('Z'))Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 48 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
) {
6-48
2012 spec = Qt::UTC;-
2013 isoString = isoString.left(isoString.size() - 1);-
2014 }
executed 6 times by 1 test: end of block
Executed by:
  • tst_QDateTime
else {
6
2015-
2016-
2017 int signIndex = isoString.size() - 1;-
2018 bool found = false;-
2019 {-
2020 const QChar plus = QLatin1Char('+');-
2021 const QChar minus = QLatin1Char('-');-
2022 do {-
2023 QChar character(isoString.at(signIndex));-
2024 found = character == plus
character == plusDescription
TRUEevaluated 5 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 397 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
|| character == minus
character == minusDescription
TRUEevaluated 8 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 389 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
;
5-397
2025 }
executed 402 times by 4 tests: end of block
Executed by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
while (--
--signIndex >= 0Description
TRUEevaluated 367 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
FALSEevaluated 35 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
signIndex >= 0
--signIndex >= 0Description
TRUEevaluated 367 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
FALSEevaluated 35 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
&& !found
!foundDescription
TRUEevaluated 354 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
FALSEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
);
13-402
2026 ++signIndex;-
2027 }-
2028-
2029 if (found
foundDescription
TRUEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 35 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
) {
13-35
2030 bool ok;-
2031 offset = fromOffsetString(isoString.mid(signIndex), &ok);-
2032 if (!ok
!okDescription
TRUEnever evaluated
FALSEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
)
0-13
2033 return
never executed: return QDateTime();
QDateTime();
never executed: return QDateTime();
0
2034 isoString = isoString.left(signIndex);-
2035 spec = Qt::OffsetFromUTC;-
2036 }
executed 13 times by 1 test: end of block
Executed by:
  • tst_QDateTime
13
2037 }
executed 48 times by 4 tests: end of block
Executed by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
48
2038-
2039-
2040-
2041 bool isMidnight24 = false;-
2042 QTime time = fromIsoTimeString(isoString, Qt::ISODate, &isMidnight24);-
2043 if (!time.isValid()
!time.isValid()Description
TRUEnever evaluated
FALSEevaluated 54 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
)
0-54
2044 return
never executed: return QDateTime();
QDateTime();
never executed: return QDateTime();
0
2045 if (isMidnight24
isMidnight24Description
TRUEevaluated 5 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 49 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
)
5-49
2046 date = date.addDays(1);
executed 5 times by 1 test: date = date.addDays(1);
Executed by:
  • tst_QDateTime
5
2047 return
executed 54 times by 4 tests: return QDateTime(date, time, spec, offset);
Executed by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
QDateTime(date, time, spec, offset);
executed 54 times by 4 tests: return QDateTime(date, time, spec, offset);
Executed by:
  • tst_QDateTime
  • tst_QNetworkReply
  • tst_QSqlQuery
  • tst_QVariant
54
2048 }-
2049-
2050 case
executed 42 times by 3 tests: case Qt::TextDate:
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
Qt::TextDate:
executed 42 times by 3 tests: case Qt::TextDate:
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
{
42
2051 QVector<QStringRef> parts = string.splitRef(QLatin1Char(' '), QString::SkipEmptyParts);-
2052-
2053 if ((
(parts.count() < 5)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 41 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
parts.count() < 5)
(parts.count() < 5)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 41 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
|| (
(parts.count() > 6)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
parts.count() > 6)
(parts.count() > 6)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
1-41
2054 return
executed 2 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 2 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
2
2055-
2056-
2057 int month = 0;-
2058 int day = 0;-
2059 bool ok = false;-
2060-
2061-
2062 month = fromShortMonthName(parts.at(1));-
2063 if (month
monthDescription
TRUEevaluated 40 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
FALSEnever evaluated
)
0-40
2064 day = parts.at(2).toInt();
executed 40 times by 3 tests: day = parts.at(2).toInt();
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
40
2065-
2066-
2067 if (!month
!monthDescription
TRUEnever evaluated
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
|| !day
!dayDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 26 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
) {
0-40
2068 month = fromShortMonthName(parts.at(2));-
2069 if (month
monthDescription
TRUEevaluated 14 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEnever evaluated
) {
0-14
2070 QStringRef dayStr = parts.at(1);-
2071 if (dayStr.endsWith(QLatin1Char('.'))
dayStr.endsWit...tin1Char('.'))Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_QDateTime
) {
2-12
2072 dayStr = dayStr.left(dayStr.size() - 1);-
2073 day = dayStr.toInt();-
2074 }
executed 12 times by 1 test: end of block
Executed by:
  • tst_QDateTime
12
2075 }
executed 14 times by 1 test: end of block
Executed by:
  • tst_QDateTime
14
2076 }
executed 14 times by 1 test: end of block
Executed by:
  • tst_QDateTime
14
2077-
2078-
2079 if (!month
!monthDescription
TRUEnever evaluated
FALSEevaluated 40 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
|| !day
!dayDescription
TRUEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 37 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
0-40
2080 return
executed 3 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 3 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
3
2081-
2082-
2083-
2084 int year = 0;-
2085 int yearPart = 0;-
2086 int timePart = 0;-
2087 if (parts.at(3).contains(QLatin1Char(':'))
parts.at(3).co...tin1Char(':'))Description
TRUEevaluated 23 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
FALSEevaluated 14 times by 1 test
Evaluated by:
  • tst_QDateTime
) {
14-23
2088 yearPart = 4;-
2089 timePart = 3;-
2090 }
executed 23 times by 3 tests: end of block
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
else if (parts.at(4).contains(QLatin1Char(':'))
parts.at(4).co...tin1Char(':'))Description
TRUEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
) {
1-23
2091 yearPart = 3;-
2092 timePart = 4;-
2093 }
executed 13 times by 1 test: end of block
Executed by:
  • tst_QDateTime
else {
13
2094 return
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
1
2095 }-
2096-
2097 year = parts.at(yearPart).toInt(&ok);-
2098 if (!ok
!okDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 34 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
2-34
2099 return
executed 2 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 2 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
2
2100-
2101 QDate date(year, month, day);-
2102 if (!date.isValid()
!date.isValid()Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 32 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
2-32
2103 return
executed 2 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 2 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
2
2104-
2105 QVector<QStringRef> timeParts = parts.at(timePart).split(QLatin1Char(':'));-
2106 if (timeParts.count() < 2
timeParts.count() < 2Description
TRUEnever evaluated
FALSEevaluated 32 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
|| timeParts.count() > 3
timeParts.count() > 3Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 31 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
0-32
2107 return
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
1
2108-
2109 int hour = timeParts.at(0).toInt(&ok);-
2110 if (!ok
!okDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 30 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
1-30
2111 return
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
1
2112-
2113 int minute = timeParts.at(1).toInt(&ok);-
2114 if (!ok
!okDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 29 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
1-29
2115 return
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
1
2116-
2117 int second = 0;-
2118 int millisecond = 0;-
2119 if (timeParts.count() > 2
timeParts.count() > 2Description
TRUEevaluated 28 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
) {
1-28
2120 const QVector<QStringRef> secondParts = timeParts.at(2).split(QLatin1Char('.'));-
2121 if (secondParts.size() > 2
secondParts.size() > 2Description
TRUEnever evaluated
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
) {
0-28
2122 return
never executed: return QDateTime();
QDateTime();
never executed: return QDateTime();
0
2123 }-
2124-
2125 second = secondParts.first().toInt(&ok);-
2126 if (!ok
!okDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 27 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
) {
1-27
2127 return
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
1
2128 }-
2129-
2130 if (secondParts.size() > 1
secondParts.size() > 1Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 26 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
) {
1-26
2131 millisecond = secondParts.last().toInt(&ok);-
2132 if (!ok
!okDescription
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
) {
0-1
2133 return
never executed: return QDateTime();
QDateTime();
never executed: return QDateTime();
0
2134 }-
2135 }
executed 1 time by 1 test: end of block
Executed by:
  • tst_QDateTime
1
2136 }
executed 27 times by 3 tests: end of block
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
27
2137-
2138 QTime time(hour, minute, second, millisecond);-
2139 if (!time.isValid()
!time.isValid()Description
TRUEnever evaluated
FALSEevaluated 28 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
)
0-28
2140 return
never executed: return QDateTime();
QDateTime();
never executed: return QDateTime();
0
2141-
2142 if (parts.count() == 5
parts.count() == 5Description
TRUEevaluated 15 times by 3 tests
Evaluated by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
FALSEevaluated 13 times by 1 test
Evaluated by:
  • tst_QDateTime
)
13-15
2143 return
executed 15 times by 3 tests: return QDateTime(date, time, Qt::LocalTime);
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
QDateTime(date, time, Qt::LocalTime);
executed 15 times by 3 tests: return QDateTime(date, time, Qt::LocalTime);
Executed by:
  • tst_QDate
  • tst_QDateTime
  • tst_QNetworkRequest
15
2144-
2145 QStringRef tz = parts.at(5);-
2146 if (!tz.startsWith(QLatin1String("GMT"), Qt::CaseInsensitive)
!tz.startsWith...seInsensitive)Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_QDateTime
)
1-12
2147 return
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 1 time by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
1
2148 tz = tz.mid(3);-
2149 if (!tz.isEmpty()
!tz.isEmpty()Description
TRUEevaluated 9 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 3 times by 1 test
Evaluated by:
  • tst_QDateTime
) {
3-9
2150 int offset = fromOffsetString(tz, &ok);-
2151 if (!ok
!okDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_QDateTime
FALSEevaluated 5 times by 1 test
Evaluated by:
  • tst_QDateTime
)
4-5
2152 return
executed 4 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime();
executed 4 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
4
2153 return
executed 5 times by 1 test: return QDateTime(date, time, Qt::OffsetFromUTC, offset);
Executed by:
  • tst_QDateTime
QDateTime(date, time, Qt::OffsetFromUTC, offset);
executed 5 times by 1 test: return QDateTime(date, time, Qt::OffsetFromUTC, offset);
Executed by:
  • tst_QDateTime
5
2154 } else {-
2155 return
executed 3 times by 1 test: return QDateTime(date, time, Qt::UTC);
Executed by:
  • tst_QDateTime
QDateTime(date, time, Qt::UTC);
executed 3 times by 1 test: return QDateTime(date, time, Qt::UTC);
Executed by:
  • tst_QDateTime
3
2156 }-
2157 }-
2158-
2159 }-
2160-
2161 return
never executed: return QDateTime();
QDateTime();
never executed: return QDateTime();
0
2162}-
2163QDateTime QDateTime::fromString(const QString &string, const QString &format)-
2164{-
2165-
2166 QTime time;-
2167 QDate date;-
2168-
2169 QDateTimeParser dt(QVariant::DateTime, QDateTimeParser::FromString);-
2170 if (dt.parseFormat(format)
dt.parseFormat(format)Description
TRUEevaluated 49 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QNetworkCookieJar
  • tst_QNetworkReply
FALSEnever evaluated
&& dt.fromString(string, &date, &time)
dt.fromString(... &date, &time)Description
TRUEevaluated 41 times by 4 tests
Evaluated by:
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QNetworkCookieJar
  • tst_QNetworkReply
FALSEevaluated 8 times by 1 test
Evaluated by:
  • tst_QDateTime
)
0-49
2171 return
executed 41 times by 4 tests: return QDateTime(date, time);
Executed by:
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QNetworkCookieJar
  • tst_QNetworkReply
QDateTime(date, time);
executed 41 times by 4 tests: return QDateTime(date, time);
Executed by:
  • tst_QDateTime
  • tst_QDateTimeEdit
  • tst_QNetworkCookieJar
  • tst_QNetworkReply
41
2172-
2173-
2174-
2175-
2176 return
executed 8 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
QDateTime(QDate(), QTime(-1, -1, -1));();
executed 8 times by 1 test: return QDateTime();
Executed by:
  • tst_QDateTime
8
2177}-
2178QDataStream &operator<<(QDataStream &out, const QDate &date)-
2179{-
2180 if (out.version() < QDataStream::Qt_5_0)-
2181 return out << quint32(date.jd);-
2182 else-
2183 return out << qint64(date.jd);-
2184}-
2185QDataStream &operator>>(QDataStream &in, QDate &date)-
2186{-
2187 if (in.version() < QDataStream::Qt_5_0) {-
2188 quint32 jd;-
2189 in >> jd;-
2190-
2191 date.jd = (jd != 0 ? jd : QDate::nullJd());-
2192 } else {-
2193 qint64 jd;-
2194 in >> jd;-
2195 date.jd = jd;-
2196 }-
2197-
2198 return in;-
2199}-
2200QDataStream &operator<<(QDataStream &out, const QTime &time)-
2201{-
2202 if (out.version() >= QDataStream::Qt_4_0) {-
2203 return out << quint32(time.mds);-
2204 } else {-
2205-
2206 return out << quint32(time.isNull() ? 0 : time.mds);-
2207 }-
2208}-
2209QDataStream &operator>>(QDataStream &in, QTime &time)-
2210{-
2211 quint32 ds;-
2212 in >> ds;-
2213 if (in.version() >= QDataStream::Qt_4_0) {-
2214 time.mds = int(ds);-
2215 } else {-
2216-
2217 time.mds = (ds == 0) ? QTime::NullTime : int(ds);-
2218 }-
2219 return in;-
2220}-
2221QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)-
2222{-
2223 QPair<QDate, QTime> dateAndTime;-
2224-
2225 if (out.version() >= QDataStream::Qt_5_2) {-
2226-
2227-
2228 dateAndTime = dateTime.d->getDateTime();-
2229 out << dateAndTime << qint8(dateTime.timeSpec());-
2230 if (dateTime.timeSpec() == Qt::OffsetFromUTC)-
2231 out << qint32(dateTime.offsetFromUtc());-
2232-
2233 else if (dateTime.timeSpec() == Qt::TimeZone)-
2234 out << dateTime.timeZone();-
2235-
2236-
2237 } else if (out.version() == QDataStream::Qt_5_0) {-
2238-
2239-
2240-
2241-
2242-
2243 dateAndTime = (dateTime.isValid() ? dateTime.toUTC() : dateTime).d->getDateTime();-
2244 out << dateAndTime << qint8(dateTime.timeSpec());-
2245-
2246 } else if (out.version() >= QDataStream::Qt_4_0) {-
2247-
2248-
2249 dateAndTime = dateTime.d->getDateTime();-
2250 out << dateAndTime;-
2251 switch (dateTime.timeSpec()) {-
2252 case Qt::UTC:-
2253 out << (qint8)QDateTimePrivate::UTC;-
2254 break;-
2255 case Qt::OffsetFromUTC:-
2256 out << (qint8)QDateTimePrivate::OffsetFromUTC;-
2257 break;-
2258 case Qt::TimeZone:-
2259 out << (qint8)QDateTimePrivate::TimeZone;-
2260 break;-
2261 case Qt::LocalTime:-
2262 out << (qint8)QDateTimePrivate::LocalUnknown;-
2263 break;-
2264 }-
2265-
2266 } else {-
2267-
2268-
2269 dateAndTime = dateTime.d->getDateTime();-
2270 out << dateAndTime;-
2271-
2272 }-
2273-
2274 return out;-
2275}-
2276QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)-
2277{-
2278 QDate dt;-
2279 QTime tm;-
2280 qint8 ts = 0;-
2281 Qt::TimeSpec spec = Qt::LocalTime;-
2282 qint32 offset = 0;-
2283-
2284 QTimeZone tz;-
2285-
2286-
2287 if (in.version() >= QDataStream::Qt_5_2) {-
2288-
2289-
2290 in >> dt >> tm >> ts;-
2291 spec = static_cast<Qt::TimeSpec>(ts);-
2292 if (spec == Qt::OffsetFromUTC) {-
2293 in >> offset;-
2294 dateTime = QDateTime(dt, tm, spec, offset);-
2295-
2296 } else if (spec == Qt::TimeZone) {-
2297 in >> tz;-
2298 dateTime = QDateTime(dt, tm, tz);-
2299-
2300 } else {-
2301 dateTime = QDateTime(dt, tm, spec);-
2302 }-
2303-
2304 } else if (in.version() == QDataStream::Qt_5_0) {-
2305-
2306-
2307 in >> dt >> tm >> ts;-
2308 spec = static_cast<Qt::TimeSpec>(ts);-
2309 dateTime = QDateTime(dt, tm, Qt::UTC);-
2310 dateTime = dateTime.toTimeSpec(spec);-
2311-
2312 } else if (in.version() >= QDataStream::Qt_4_0) {-
2313-
2314-
2315 in >> dt >> tm >> ts;-
2316 switch ((QDateTimePrivate::Spec)ts) {-
2317 case QDateTimePrivate::UTC:-
2318 spec = Qt::UTC;-
2319 break;-
2320 case QDateTimePrivate::OffsetFromUTC:-
2321 spec = Qt::OffsetFromUTC;-
2322 break;-
2323 case QDateTimePrivate::TimeZone:-
2324 spec = Qt::TimeZone;-
2325-
2326-
2327-
2328 break;-
2329 case QDateTimePrivate::LocalUnknown:-
2330 case QDateTimePrivate::LocalStandard:-
2331 case QDateTimePrivate::LocalDST:-
2332 spec = Qt::LocalTime;-
2333 break;-
2334 }-
2335 dateTime = QDateTime(dt, tm, spec, offset);-
2336-
2337 } else {-
2338-
2339-
2340 in >> dt >> tm;-
2341 dateTime = QDateTime(dt, tm, spec, offset);-
2342-
2343 }-
2344-
2345 return in;-
2346}-
2347-
2348-
2349-
2350-
2351-
2352-
2353-
2354QDebug operator<<(QDebug dbg, const QDate &date)-
2355{-
2356 QDebugStateSaver saver(dbg);-
2357 dbg.nospace() << "QDate(" << date.toString(Qt::ISODate) << ')';-
2358 return dbg;-
2359}-
2360-
2361QDebug operator<<(QDebug dbg, const QTime &time)-
2362{-
2363 QDebugStateSaver saver(dbg);-
2364 dbg.nospace() << "QTime(" << time.toString(([]() -> QString { enum { Size = sizeof(u"" "HH:mm:ss.zzz")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "HH:mm:ss.zzz" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }())) << ')';-
2365 return dbg;-
2366}-
2367-
2368QDebug operator<<(QDebug dbg, const QDateTime &date)-
2369{-
2370 QDebugStateSaver saver(dbg);-
2371 const Qt::TimeSpec ts = date.timeSpec();-
2372 dbg.nospace() << "QDateTime(";-
2373 dbg.noquote() << date.toString(([]() -> QString { enum { Size = sizeof(u"" "yyyy-MM-dd HH:mm:ss.zzz t")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "yyyy-MM-dd HH:mm:ss.zzz t" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }()))-
2374 << ' ' << ts;-
2375 switch (ts) {-
2376 case Qt::UTC:-
2377 break;-
2378 case Qt::OffsetFromUTC:-
2379 dbg << ' ' << date.offsetFromUtc() << 's';-
2380 break;-
2381 case Qt::TimeZone:-
2382-
2383 dbg << ' ' << date.timeZone().id();-
2384-
2385 break;-
2386 case Qt::LocalTime:-
2387 break;-
2388 }-
2389 return dbg << ')';-
2390}-
2391uint qHash(const QDateTime &key, uint seed)-
2392{-
2393-
2394-
2395-
2396-
2397 return qHash(key.toMSecsSinceEpoch(), seed);-
2398}-
2399-
2400-
2401-
2402-
2403-
2404-
2405-
2406uint qHash(const QDate &key, uint seed) noexcept-
2407{-
2408 return
executed 6 times by 1 test: return qHash(key.toJulianDay(), seed);
Executed by:
  • tst_QDate
qHash(key.toJulianDay(), seed);
executed 6 times by 1 test: return qHash(key.toJulianDay(), seed);
Executed by:
  • tst_QDate
6
2409}-
2410-
2411-
2412-
2413-
2414-
2415-
2416-
2417uint qHash(const QTime &key, uint seed) noexcept-
2418{-
2419 return
executed 4 times by 1 test: return qHash(key.msecsSinceStartOfDay(), seed);
Executed by:
  • tst_QTime
qHash(key.msecsSinceStartOfDay(), seed);
executed 4 times by 1 test: return qHash(key.msecsSinceStartOfDay(), seed);
Executed by:
  • tst_QTime
4
2420}-
2421-
2422-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9