Parse dates as Qt::RFC2822Date too
authorAlbert Astals Cid <albert.astals@canonical.com>
Mon, 5 Jan 2015 13:44:36 +0000 (14:44 +0100)
committerAlbert Astals Cid <albert.astals@canonical.com>
Thu, 8 Jan 2015 09:03:02 +0000 (10:03 +0100)
[ChangeLog][QtQml] Fix JavaScript Date parsing to correctly accept RC2822 dates.

Task-number: QTBUG-38011
Change-Id: Ic7d3f5b8c624d6780d4c3595fd2efe22c427ffd3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
src/qml/jsruntime/qv4dateobject.cpp
tests/auto/qml/qqmlecmascript/data/date.qml
tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp

index e00a705..b3c340c 100644 (file)
@@ -480,6 +480,8 @@ static inline double ParseString(const QString &s)
     QDateTime dt = QDateTime::fromString(s, Qt::TextDate);
     if (!dt.isValid())
         dt = QDateTime::fromString(s, Qt::ISODate);
+    if (!dt.isValid())
+        dt = QDateTime::fromString(s, Qt::RFC2822Date);
     if (!dt.isValid()) {
         QStringList formats;
         formats << QStringLiteral("M/d/yyyy")
index 0dcba71..41dcaaf 100644 (file)
@@ -17,4 +17,10 @@ Item {
         var dt = new Date("");
         return isNaN(dt);
     }
+
+    function test_rfc2822_date()
+    {
+        var dt = new Date("Wed, 18 Sep 2013 07:00:51 -0700");
+        return dt.getTime();
+    }
 }
index 019d679..38a2aff 100644 (file)
@@ -7361,7 +7361,8 @@ void tst_qqmlecmascript::dateParse()
     QMetaObject::invokeMethod(object, "test_is_invalid_qtDateTime", Q_RETURN_ARG(QVariant, q));
     QVERIFY(q.toBool() == true);
 
-
+    QMetaObject::invokeMethod(object, "test_rfc2822_date", Q_RETURN_ARG(QVariant, q));
+    QCOMPARE(q.toLongLong(), 1379512851000LL);
 }
 
 void tst_qqmlecmascript::utcDate()