From 55f5b29d7975d7e642ec258e44ca23726e1dfa0d Mon Sep 17 00:00:00 2001 From: John Layt Date: Mon, 11 Feb 2013 13:44:37 +0000 Subject: QDateTime - Add QTimeZone support Add support to QDateTime for time zones using the new QTimeZone class. [ChangeLog][QtCore][QDateTime] Add support for a new Qt::TimeZone spec to be used with QTimeZone to define times in a specific time zone. Change-Id: I21bfa52a8ba8989b55bb74e025d1f2b2b623b2a7 Reviewed-by: Thiago Macieira --- tests/benchmarks/corelib/tools/qdatetime/main.cpp | 91 ++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) (limited to 'tests/benchmarks') diff --git a/tests/benchmarks/corelib/tools/qdatetime/main.cpp b/tests/benchmarks/corelib/tools/qdatetime/main.cpp index 9da6611ec0..8550ef6cb2 100644 --- a/tests/benchmarks/corelib/tools/qdatetime/main.cpp +++ b/tests/benchmarks/corelib/tools/qdatetime/main.cpp @@ -39,7 +39,8 @@ ** ****************************************************************************/ -#include +#include +#include #include #include @@ -71,21 +72,27 @@ private Q_SLOTS: void toMSecsSinceEpoch(); void toMSecsSinceEpoch1950(); void toMSecsSinceEpoch2050(); + void toMSecsSinceEpochTz(); + void toMSecsSinceEpoch1950Tz(); + void toMSecsSinceEpoch2050Tz(); void toTime_t(); void setDate(); void setTime(); void setTimeSpec(); void setOffsetFromUtc(); void setMSecsSinceEpoch(); + void setMSecsSinceEpochTz(); void setTime_t(); void toString(); void toStringTextFormat(); void toStringIsoFormat(); void addDays(); + void addDaysTz(); void addMonths(); void addYears(); void addSecs(); void addMSecs(); + void addMSecsTz(); void toTimeSpec(); void toOffsetFromUtc(); void daysTo(); @@ -106,6 +113,7 @@ private Q_SLOTS: void fromTime_t(); void fromMSecsSinceEpoch(); void fromMSecsSinceEpochUtc(); + void fromMSecsSinceEpochTz(); }; void tst_QDateTime::create() @@ -228,6 +236,42 @@ void tst_QDateTime::toMSecsSinceEpoch2050() } } +void tst_QDateTime::toMSecsSinceEpochTz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QList list; + for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd) + list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet)); + QBENCHMARK { + foreach (const QDateTime &test, list) + qint64 result = test.toMSecsSinceEpoch(); + } +} + +void tst_QDateTime::toMSecsSinceEpoch1950Tz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QList list; + for (int jd = JULIAN_DAY_1950; jd < JULIAN_DAY_1960; ++jd) + list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet)); + QBENCHMARK { + foreach (const QDateTime &test, list) + qint64 result = test.toMSecsSinceEpoch(); + } +} + +void tst_QDateTime::toMSecsSinceEpoch2050Tz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QList list; + for (int jd = JULIAN_DAY_2050; jd < JULIAN_DAY_2060; ++jd) + list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet)); + QBENCHMARK { + foreach (const QDateTime &test, list) + qint64 result = test.toMSecsSinceEpoch(); + } +} + void tst_QDateTime::toTime_t() { QList list; @@ -295,6 +339,18 @@ void tst_QDateTime::setMSecsSinceEpoch() } } +void tst_QDateTime::setMSecsSinceEpochTz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QList list; + for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd) + list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet)); + QBENCHMARK { + foreach (QDateTime test, list) + test.setMSecsSinceEpoch((JULIAN_DAY_2010 + 180) * MSECS_PER_DAY); + } +} + void tst_QDateTime::setTime_t() { time_t secs = time_t(JULIAN_DAY_2010 + 180) * SECS_PER_DAY; @@ -351,6 +407,18 @@ void tst_QDateTime::addDays() } } +void tst_QDateTime::addDaysTz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QList list; + for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd) + list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet)); + QBENCHMARK { + foreach (const QDateTime &test, list) + QDateTime result = test.addDays(1); + } +} + void tst_QDateTime::addMonths() { QList list; @@ -395,6 +463,18 @@ void tst_QDateTime::addMSecs() } } +void tst_QDateTime::addMSecsTz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QList list; + for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd) + list.append(QDateTime(QDate::fromJulianDay(jd), QTime::fromMSecsSinceStartOfDay(0), cet)); + QBENCHMARK { + foreach (const QDateTime &test, list) + QDateTime result = test.addMSecs(1); + } +} + void tst_QDateTime::toTimeSpec() { QList list; @@ -601,6 +681,15 @@ void tst_QDateTime::fromMSecsSinceEpochUtc() } } +void tst_QDateTime::fromMSecsSinceEpochTz() +{ + QTimeZone cet = QTimeZone("Europe/Oslo"); + QBENCHMARK { + for (int jd = JULIAN_DAY_2010; jd < JULIAN_DAY_2020; ++jd) + QDateTime test = QDateTime::fromMSecsSinceEpoch(jd * MSECS_PER_DAY, cet); + } +} + QTEST_MAIN(tst_QDateTime) #include "main.moc" -- cgit v1.2.3