Skip to content

Commit f5d0795

Browse files
Alex Agranovdantti
authored andcommitted
fix QDateTime performance on Qt6
1 parent 0868573 commit f5d0795

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

QXlsx/source/xlsxutility.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,33 @@ double timeToNumber(const QTime &time)
8080
return QTime(0, 0).msecsTo(time) / (1000 * 60 * 60 * 24.0);
8181
}
8282

83+
#if QT_VERSION >= QT_VERSION_CHECK(6,5,0)
84+
static qint64 msecs1904 = QDateTime(QDate(1904, 1, 1), QTime(0, 0)).toMSecsSinceEpoch();
85+
static qint64 msecs1899 = QDateTime(QDate(1899, 12, 31), QTime(0, 0)).toMSecsSinceEpoch();
86+
#endif
87+
8388
QVariant datetimeFromNumber(double num, bool is1904)
8489
{
85-
QDateTime dtRet; // return value
86-
8790
if (!is1904 && num > 60) // for mac os excel
8891
{
8992
num = num - 1;
9093
}
9194

9295
qint64 msecs = static_cast<qint64>(num * 1000 * 60 * 60 * 24.0 + 0.5);
96+
97+
#if QT_VERSION >= QT_VERSION_CHECK(6,5,0)
98+
if (is1904)
99+
msecs += msecs1904;
100+
else
101+
msecs += msecs1899;
102+
103+
QDateTime dtRet = QDateTime::fromMSecsSinceEpoch(msecs);
104+
#else
105+
QDateTime dtRet; // return value
93106
QDateTime epoch(is1904 ? QDate(1904, 1, 1) : QDate(1899, 12, 31), QTime(0, 0));
94107
QDateTime dtOld = epoch.addMSecs(msecs);
95108
dtRet = dtOld;
96-
109+
#endif
97110
// Remove one hour to see whether the date is Daylight
98111
QDateTime dtNew = dtRet.addMSecs(-3600000); // issue102
99112
if (dtNew.isDaylightTime()) {

0 commit comments

Comments
 (0)