diff options
author | John Layt <jlayt@kde.org> | 2013-10-17 19:02:03 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-17 23:31:10 +0200 |
commit | 93f5e0598ad2c7738409eb027fc868ab35db5920 (patch) | |
tree | f8af354e20b47174246e1c51e805c6a85829bd28 | |
parent | 72544a5142b19454f9636c567ba199161c02e79b (diff) |
QDateTime - Fix RFC 2822 Date Formatting
The RFC 2822 date format should always use en_US locale for month and
day names instead of whatever the system locale is. Also remove some
duplicate code.
Change-Id: Ia2f7ee405b4e0e2f04980301783b9488628da73f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/tools/qdatetime.cpp | 28 | ||||
-rw-r--r-- | tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp | 4 |
2 files changed, 7 insertions, 25 deletions
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index dec4d9aaa4..5ce11a43aa 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -891,7 +891,7 @@ QString QDate::toString(Qt::DateFormat format) const case Qt::DefaultLocaleLongDate: return QLocale().toString(*this, QLocale::LongFormat); case Qt::RFC2822Date: - return toString(QStringLiteral("dd MMM yyyy")); + return QLocale::c().toString(*this, QStringLiteral("dd MMM yyyy")); default: #ifndef QT_NO_TEXTDATE case Qt::TextDate: @@ -1638,9 +1638,6 @@ QString QTime::toString(Qt::DateFormat format) const case Qt::DefaultLocaleLongDate: return QLocale().toString(*this, QLocale::LongFormat); case Qt::RFC2822Date: - return QString::fromLatin1("%1:%2:%3").arg(hour(), 2, 10, QLatin1Char('0')) - .arg(minute(), 2, 10, QLatin1Char('0')) - .arg(second(), 2, 10, QLatin1Char('0')); case Qt::ISODate: case Qt::TextDate: default: @@ -3548,27 +3545,8 @@ QString QDateTime::toString(Qt::DateFormat format) const case Qt::DefaultLocaleLongDate: return QLocale().toString(*this, QLocale::LongFormat); case Qt::RFC2822Date: { - buf = toString(QStringLiteral("dd MMM yyyy hh:mm:ss ")); - - int utcOffset = d->m_offsetFromUtc; - if (timeSpec() == Qt::LocalTime) { - QDateTime utc = toUTC(); - utc.setTimeSpec(timeSpec()); - utcOffset = utc.secsTo(*this); - } - - const int offset = qAbs(utcOffset); - buf += QLatin1Char((offset == utcOffset) ? '+' : '-'); - - const int hour = offset / 3600; - if (hour < 10) - buf += QLatin1Char('0'); - buf += QString::number(hour); - - const int min = (offset - (hour * 3600)) / 60; - if (min < 10) - buf += QLatin1Char('0'); - buf += QString::number(min); + buf = QLocale::c().toString(*this, QStringLiteral("dd MMM yyyy hh:mm:ss ")); + buf += toOffsetString(Qt::TextDate, d->m_offsetFromUtc); return buf; } default: diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp index 0c560df423..0ee40713aa 100644 --- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp +++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp @@ -778,7 +778,11 @@ void tst_QDateTime::toString_rfcDate() QFETCH(QDateTime, dt); QFETCH(QString, formatted); + // Set to non-English locale to confirm still uses English + QLocale oldLocale; + QLocale::setDefault(QLocale("de_DE")); QCOMPARE(dt.toString(Qt::RFC2822Date), formatted); + QLocale::setDefault(oldLocale); } void tst_QDateTime::toString_enumformat() |