Skip to content

Commit

Permalink
Simplify datetimeFromNumber code
Browse files Browse the repository at this point in the history
  • Loading branch information
dantti committed Sep 2, 2024
1 parent c643be3 commit 81284da
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions QXlsx/source/xlsxutility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,33 +80,25 @@ double timeToNumber(const QTime &time)
return QTime(0, 0).msecsTo(time) / (1000 * 60 * 60 * 24.0);
}

#if QT_VERSION >= QT_VERSION_CHECK(6,5,0)
static qint64 msecs1904 = QDateTime(QDate(1904, 1, 1), QTime(0, 0)).toMSecsSinceEpoch();
static qint64 msecs1899 = QDateTime(QDate(1899, 12, 31), QTime(0, 0)).toMSecsSinceEpoch();
#endif

QVariant datetimeFromNumber(double num, bool is1904)
{
static qint64 msecs1904 = QDateTime(QDate(1904, 1, 1), QTime(0, 0)).toMSecsSinceEpoch();
static qint64 msecs1899 = QDateTime(QDate(1899, 12, 31), QTime(0, 0)).toMSecsSinceEpoch();

if (!is1904 && num > 60) // for mac os excel
{
num = num - 1;
}

qint64 msecs = static_cast<qint64>(num * 1000 * 60 * 60 * 24.0 + 0.5);

#if QT_VERSION >= QT_VERSION_CHECK(6,5,0)
if (is1904)
msecs += msecs1904;
else
msecs += msecs1899;

QDateTime dtRet = QDateTime::fromMSecsSinceEpoch(msecs);
#else
QDateTime dtRet; // return value
QDateTime epoch(is1904 ? QDate(1904, 1, 1) : QDate(1899, 12, 31), QTime(0, 0));
QDateTime dtOld = epoch.addMSecs(msecs);
dtRet = dtOld;
#endif

// Remove one hour to see whether the date is Daylight
QDateTime dtNew = dtRet.addMSecs(-3600000); // issue102
if (dtNew.isDaylightTime()) {
Expand Down

0 comments on commit 81284da

Please sign in to comment.