conversion/commonconversion.cpp tests/timezonetest.cpp tests/timezonetest.h

Christian Mollekopf mollekopf at kolabsys.com
Wed Nov 13 14:12:34 CET 2013


 conversion/commonconversion.cpp |    7 +++++++
 tests/timezonetest.cpp          |    8 ++++++++
 tests/timezonetest.h            |    1 +
 3 files changed, 16 insertions(+)

New commits:
commit cd2e03138691d4e7a7e08b12f438f4a80cc7c513
Author: Christian Mollekopf <mollekopf at kolabsys.com>
Date:   Wed Nov 13 14:07:38 2013 +0100

    Convert utc offset date times to utc.

diff --git a/conversion/commonconversion.cpp b/conversion/commonconversion.cpp
index 3546395..7accd22 100644
--- a/conversion/commonconversion.cpp
+++ b/conversion/commonconversion.cpp
@@ -88,6 +88,13 @@ cDateTime fromDate(const KDateTime &dt)
         date.setTime(t.hour(), t.minute(), t.second());
         if (dt.timeType() == KDateTime::UTC) { //UTC
             date.setUTC(true);
+        } else if (dt.timeType() == KDateTime::OffsetFromUTC) {
+            const KDateTime utcDate = dt.toUtc();
+            const QDate &d = utcDate.date();
+            date.setDate(d.year(), d.month(), d.day());
+            const QTime &t = utcDate.time();
+            date.setTime(t.hour(), t.minute(), t.second());
+            date.setUTC(true);
         } else if (dt.timeType() == KDateTime::TimeZone) { //Timezone
             //TODO handle local timezone?
             //Convert non-olson timezones if necessary
diff --git a/tests/timezonetest.cpp b/tests/timezonetest.cpp
index d2c49b7..d382425 100644
--- a/tests/timezonetest.cpp
+++ b/tests/timezonetest.cpp
@@ -17,6 +17,7 @@
 
 #include "timezonetest.h"
 #include <conversion/timezoneconverter.h>
+#include <conversion/commonconversion.h>
 #include <kolabformat/kolabobject.h>
 #include <kolabformat/errorhandler.h>
 #include "testutils.h"
@@ -168,6 +169,13 @@ void TimezoneTest::testTimezoneDaemonAvailable()
     QVERIFY(KSystemTimeZones::isTimeZoneDaemonAvailable());
 }
 
+void TimezoneTest::testUTCOffset()
+{
+    const Kolab::cDateTime expected(2013, 10, 23, 2, 0 ,0, true);
+    const KDateTime input(KDateTime::fromString("2013-10-23T04:00:00+02:00", KDateTime::RFC3339Date));
+    const Kolab::cDateTime result = Kolab::Conversion::fromDate(input);
+    QCOMPARE(result, expected);
+}
 
 QTEST_MAIN( TimezoneTest )
 
diff --git a/tests/timezonetest.h b/tests/timezonetest.h
index ed2f33f..fa518a6 100644
--- a/tests/timezonetest.h
+++ b/tests/timezonetest.h
@@ -35,6 +35,7 @@ private slots:
     void testKolabObjectReader();
     void testFindLegacyTimezone();
     void testTimezoneDaemonAvailable();
+    void testUTCOffset();
 };
 
 #endif // TIMEZONETEST_H




More information about the commits mailing list