OSDN Git Service

Revert "remove redundant QDateTimePrivate::LocalDST enum"
authorIvailo Monev <xakepa10@gmail.com>
Thu, 28 Jan 2021 15:48:43 +0000 (17:48 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Thu, 28 Jan 2021 15:48:43 +0000 (17:48 +0200)
This reverts commit 5d1d502b37b9f490c82463ed9aa10d712c65ff02.

src/core/tools/qdatetime.cpp
src/core/tools/qdatetime_p.h

index 0018fa8..d704323 100644 (file)
@@ -2120,7 +2120,8 @@ void QDateTime::setDate(const QDate &date)
 {
     detach();
     d->date = date;
-    if (d->spec == QDateTimePrivate::LocalStandard)
+    if (d->spec == QDateTimePrivate::LocalStandard
+        || d->spec == QDateTimePrivate::LocalDST)
         d->spec = QDateTimePrivate::LocalUnknown;
     if (date.isValid() && !d->time.isValid())
         d->time = QTime(0, 0, 0);
@@ -2135,7 +2136,8 @@ void QDateTime::setDate(const QDate &date)
 void QDateTime::setTime(const QTime &time)
 {
     detach();
-    if (d->spec == QDateTimePrivate::LocalStandard)
+    if (d->spec == QDateTimePrivate::LocalStandard
+        || d->spec == QDateTimePrivate::LocalDST)
         d->spec = QDateTimePrivate::LocalUnknown;
     d->time = time;
 }
@@ -2826,8 +2828,9 @@ QDateTime QDateTime::currentDateTime()
     dt.d->time.mds = msecsFromDecomposed(t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000);
 
     dt.d->date.jd = julianDayFromDate(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
-    dt.d->spec = (t->tm_isdst >= 0 ? QDateTimePrivate::LocalStandard :
-                 QDateTimePrivate::LocalUnknown);
+    dt.d->spec = t->tm_isdst > 0  ? QDateTimePrivate::LocalDST :
+                 t->tm_isdst == 0 ? QDateTimePrivate::LocalStandard :
+                 QDateTimePrivate::LocalUnknown;
     return dt;
 }
 
@@ -3488,7 +3491,9 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time)
         date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday);
         time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec());
         date = date.addDays(deltaDays);
-        if (brokenDown->tm_isdst < 0)
+        if (brokenDown->tm_isdst > 0)
+            return QDateTimePrivate::LocalDST;
+        else if (brokenDown->tm_isdst < 0)
             return QDateTimePrivate::LocalUnknown;
         else
             return QDateTimePrivate::LocalStandard;
index db34b20..2c01bf2 100644 (file)
@@ -67,7 +67,7 @@ QT_BEGIN_NAMESPACE
 class QDateTimePrivate
 {
 public:
-    enum Spec { LocalUnknown = -1, LocalStandard = 0, UTC = 1, OffsetFromUTC = 2 };
+    enum Spec { LocalUnknown = -1, LocalStandard = 0, LocalDST = 1, UTC = 2, OffsetFromUTC = 3};
 
     QDateTimePrivate() : spec(LocalUnknown), utcOffset(0) {}
     QDateTimePrivate(const QDateTimePrivate &other)