[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepimlibs/kxmlrpcclient
From:       Mike Arthur <mike () mikearthur ! co ! uk>
Date:       2007-07-06 17:46:02
Message-ID: 1183743962.981218.31627.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 684481 by mikearthur:

Add check for common invalid use of ISO 8601 for dates.


 M  +16 -1     query.cpp  


--- trunk/KDE/kdepimlibs/kxmlrpcclient/query.cpp #684480:684481
@@ -289,8 +289,23 @@
     }
   } else if ( typeName == "base64" ) {
     return QVariant( QByteArray::fromBase64( typeElement.text().toLatin1() ) );
-  } else if ( typeName == "datetime" || typeName == "datetime.iso8601" ) {
+  } else if ( typeName == "datetime" ) {
     return QVariant( QDateTime::fromString( typeElement.text(), Qt::ISODate ) );
+  } else if ( typeName == "datetime.iso8601" ) {
+    QDateTime date;
+    QString dateText = typeElement.text();
+    // Test for broken use of Basic ISO8601 date and extended ISO8601 time
+    if (dateText.length() == 18 && dateText.at(4) != '-'
+        && dateText.at(11) == ':') {
+        if (dateText.endsWith('Z')) {
+          date = QDateTime::fromString( dateText, "yyyyMMddTHH:mm:ssZ" );
+        } else {
+          date = QDateTime::fromString( dateText, "yyyyMMddTHH:mm:ss" );
+        }
+    } else {
+      date = QDateTime::fromString( dateText, Qt::ISODate );
+    }
+    return QVariant( date );
   } else if ( typeName == "array" ) {
     QList<QVariant> values;
     QDomNode valueNode = typeElement.firstChild().firstChild();
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic