X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcommon%2Futil.cpp;h=728b8ca45f780b1953c740d6b1f6f87105354378;hb=579e559a6322209df7cd51c34801fecff5fe734b;hp=2b1bd8d97f0f199660ff75844342621df5609389;hpb=c1cf157116de7fc3da96203aa6f03c38c7ebb650;p=quassel.git diff --git a/src/common/util.cpp b/src/common/util.cpp index 2b1bd8d9..728b8ca4 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -357,32 +358,7 @@ QString formatDateTimeToOffsetISO(const QDateTime& dateTime) // See https://en.wikipedia.org/wiki/ISO_8601#cite_note-32 // And https://www.ietf.org/rfc/rfc3339.txt -#if 0 // The expected way to get a UTC offset on ISO 8601 dates // Remove the "T" date/time separator - return dateTime.toTimeSpec(Qt::OffsetFromUTC).toString(Qt::ISODate).replace(10, 1, " "); -#else - // Work around Qt bug that converts to UTC instead of including timezone information - // See https://bugreports.qt.io/browse/QTBUG-26161 - // - // NOTE: Despite the bug report marking as fixed in Qt 5.2.0 (QT_VERSION >= 0x050200), this - // still appears broken in Qt 5.5.1. - // - // Credit to "user362638" for the solution below, modified to fit Quassel's needs - // https://stackoverflow.com/questions/18750569/qdatetime-isodate-with-timezone - - // Get the local and UTC time - QDateTime local = QDateTime(dateTime); - QDateTime utc = local.toUTC(); - utc.setTimeSpec(Qt::LocalTime); - - // Find the UTC offset - int utcOffset = utc.secsTo(local); - - // Force the local time to follow this offset - local.setUtcOffset(utcOffset); - // Now the output should be correct - // Remove the "T" date/time separator - return local.toString(Qt::ISODate).replace(10, 1, " "); -#endif + return dateTime.toOffsetFromUtc(dateTime.offsetFromUtc()).toString(Qt::ISODate).replace(10, 1, " "); }