There is no need to use UTC datetime
This commit is contained in:
@@ -57,7 +57,7 @@ QStringList splitPath(const QString &path)
|
|||||||
double datetimeToNumber(const QDateTime &dt, bool is1904)
|
double datetimeToNumber(const QDateTime &dt, bool is1904)
|
||||||
{
|
{
|
||||||
//Note, for number 0, Excel2007 shown as 1900-1-0, which should be 1899-12-31
|
//Note, for number 0, Excel2007 shown as 1900-1-0, which should be 1899-12-31
|
||||||
QDateTime epoch(is1904 ? QDate(1904, 1, 1): QDate(1899, 12, 31), QTime(0,0), Qt::UTC);
|
QDateTime epoch(is1904 ? QDate(1904, 1, 1): QDate(1899, 12, 31), QTime(0,0));
|
||||||
|
|
||||||
double excel_time = epoch.msecsTo(dt) / (1000*60*60*24.0);
|
double excel_time = epoch.msecsTo(dt) / (1000*60*60*24.0);
|
||||||
if (!is1904 && excel_time > 59) {//31+28
|
if (!is1904 && excel_time > 59) {//31+28
|
||||||
@@ -73,7 +73,7 @@ QDateTime datetimeFromNumber(double num, bool is1904)
|
|||||||
num = num - 1;
|
num = num - 1;
|
||||||
|
|
||||||
qint64 msecs = static_cast<qint64>(num * 1000*60*60*24.0);
|
qint64 msecs = static_cast<qint64>(num * 1000*60*60*24.0);
|
||||||
QDateTime epoch(is1904 ? QDate(1904, 1, 1): QDate(1899, 12, 31), QTime(0,0), Qt::UTC);
|
QDateTime epoch(is1904 ? QDate(1904, 1, 1): QDate(1899, 12, 31), QTime(0,0));
|
||||||
|
|
||||||
return epoch.addMSecs(msecs);
|
return epoch.addMSecs(msecs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ void DocumentTest::testReadWriteDateTime()
|
|||||||
device.open(QIODevice::WriteOnly);
|
device.open(QIODevice::WriteOnly);
|
||||||
|
|
||||||
Document xlsx1;
|
Document xlsx1;
|
||||||
QDateTime dt(QDate(2012, 11, 12), QTime(6, 0), Qt::UTC);
|
QDateTime dt(QDate(2012, 11, 12), QTime(6, 0));
|
||||||
|
|
||||||
xlsx1.write("A1", dt);
|
xlsx1.write("A1", dt);
|
||||||
|
|
||||||
|
|||||||
@@ -115,13 +115,13 @@ void UtilityTest::test_datetimeToNumber_data()
|
|||||||
QTest::addColumn<double>("num");
|
QTest::addColumn<double>("num");
|
||||||
|
|
||||||
//Note, for number 0, Excel2007 shown as 1900-1-0, which should be 1899-12-31
|
//Note, for number 0, Excel2007 shown as 1900-1-0, which should be 1899-12-31
|
||||||
QTest::newRow("0") << QDateTime(QDate(1899, 12, 31), QTime(0,0), Qt::UTC) << false << 0.0;
|
QTest::newRow("0") << QDateTime(QDate(1899, 12, 31), QTime(0,0)) << false << 0.0;
|
||||||
QTest::newRow("1.25") << QDateTime(QDate(1900, 1, 1), QTime(6, 0), Qt::UTC) << false << 1.25;
|
QTest::newRow("1.25") << QDateTime(QDate(1900, 1, 1), QTime(6, 0)) << false << 1.25;
|
||||||
QTest::newRow("59") << QDateTime(QDate(1900, 2, 28), QTime(0, 0), Qt::UTC) << false << 59.0;
|
QTest::newRow("59") << QDateTime(QDate(1900, 2, 28), QTime(0, 0)) << false << 59.0;
|
||||||
QTest::newRow("61") << QDateTime(QDate(1900, 3, 1), QTime(0, 0), Qt::UTC) << false << 61.0;
|
QTest::newRow("61") << QDateTime(QDate(1900, 3, 1), QTime(0, 0)) << false << 61.0;
|
||||||
|
|
||||||
QTest::newRow("1904: 0") << QDateTime(QDate(1904, 1, 1), QTime(0,0), Qt::UTC) << true << 0.0;
|
QTest::newRow("1904: 0") << QDateTime(QDate(1904, 1, 1), QTime(0,0)) << true << 0.0;
|
||||||
QTest::newRow("1904: 1.25") << QDateTime(QDate(1904, 1, 2), QTime(6, 0), Qt::UTC) << true << 1.25;
|
QTest::newRow("1904: 1.25") << QDateTime(QDate(1904, 1, 2), QTime(6, 0)) << true << 1.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UtilityTest::test_datetimeToNumber()
|
void UtilityTest::test_datetimeToNumber()
|
||||||
@@ -139,13 +139,13 @@ void UtilityTest::test_datetimeFromNumber_data()
|
|||||||
QTest::addColumn<bool>("is1904");
|
QTest::addColumn<bool>("is1904");
|
||||||
QTest::addColumn<double>("num");
|
QTest::addColumn<double>("num");
|
||||||
|
|
||||||
QTest::newRow("0") << QDateTime(QDate(1899, 12, 31), QTime(0,0), Qt::UTC) << false << 0.0;
|
QTest::newRow("0") << QDateTime(QDate(1899, 12, 31), QTime(0,0)) << false << 0.0;
|
||||||
QTest::newRow("1.25") << QDateTime(QDate(1900, 1, 1), QTime(6, 0), Qt::UTC) << false << 1.25;
|
QTest::newRow("1.25") << QDateTime(QDate(1900, 1, 1), QTime(6, 0)) << false << 1.25;
|
||||||
QTest::newRow("59") << QDateTime(QDate(1900, 2, 28), QTime(0,0), Qt::UTC) << false << 59.0;
|
QTest::newRow("59") << QDateTime(QDate(1900, 2, 28), QTime(0,0)) << false << 59.0;
|
||||||
QTest::newRow("61") << QDateTime(QDate(1900, 3, 1), QTime(0,0), Qt::UTC) << false << 61.0;
|
QTest::newRow("61") << QDateTime(QDate(1900, 3, 1), QTime(0,0)) << false << 61.0;
|
||||||
|
|
||||||
QTest::newRow("1904: 0") << QDateTime(QDate(1904, 1, 1), QTime(0,0), Qt::UTC) << true << 0.0;
|
QTest::newRow("1904: 0") << QDateTime(QDate(1904, 1, 1), QTime(0,0)) << true << 0.0;
|
||||||
QTest::newRow("1904: 1.25") << QDateTime(QDate(1904, 1, 2), QTime(6, 0), Qt::UTC) << true << 1.25;
|
QTest::newRow("1904: 1.25") << QDateTime(QDate(1904, 1, 2), QTime(6, 0)) << true << 1.25;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UtilityTest::test_datetimeFromNumber()
|
void UtilityTest::test_datetimeFromNumber()
|
||||||
|
|||||||
Reference in New Issue
Block a user