diff options
Diffstat (limited to 'src/plugins/sqldrivers/oci/qsql_oci.cpp')
-rw-r--r-- | src/plugins/sqldrivers/oci/qsql_oci.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/sqldrivers/oci/qsql_oci.cpp b/src/plugins/sqldrivers/oci/qsql_oci.cpp index 82bf68143e..1dc0c811db 100644 --- a/src/plugins/sqldrivers/oci/qsql_oci.cpp +++ b/src/plugins/sqldrivers/oci/qsql_oci.cpp @@ -131,6 +131,15 @@ public: ~QOCIDateTime(); OCIDateTime *dateTime; static QDateTime fromOCIDateTime(OCIEnv *env, OCIError *err, OCIDateTime *dt); + static QString toOffsetString(const QDateTime &dt) + { + const auto offset = dt.offsetFromUtc(); + const auto offsetAbs = qAbs(offset) / 60; + return QString::asprintf("%c%02d:%02d", + offset >= 0 ? '+' : '-', + offsetAbs / 60, + offsetAbs % 60); + } }; QOCIDateTime::QOCIDateTime(OCIEnv *env, OCIError *err, const QDateTime &dt) @@ -140,8 +149,8 @@ QOCIDateTime::QOCIDateTime(OCIEnv *env, OCIError *err, const QDateTime &dt) if (dt.isValid()) { const QDate date = dt.date(); const QTime time = dt.time(); - // Zone in +hh:mm format (stripping UTC prefix from OffsetName) - QString timeZone = dt.timeZone().displayName(dt, QTimeZone::OffsetName).mid(3); + // Zone in +hh:mm format + const QString timeZone = toOffsetString(dt); const OraText *tz = reinterpret_cast<const OraText *>(timeZone.utf16()); OCIDateTimeConstruct(env, err, dateTime, date.year(), date.month(), date.day(), time.hour(), time.minute(), time.second(), time.msec() * 1000000, |