summaryrefslogtreecommitdiffstats
path: root/src/corelib/time
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/time')
-rw-r--r--src/corelib/time/qdatetimeparser.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/corelib/time/qdatetimeparser.cpp b/src/corelib/time/qdatetimeparser.cpp
index 9117e74375..e699bdeb24 100644
--- a/src/corelib/time/qdatetimeparser.cpp
+++ b/src/corelib/time/qdatetimeparser.cpp
@@ -2198,21 +2198,25 @@ QString QDateTimeParser::stateName(State s) const
}
}
+// Only called when we want only one of date or time; use UTC to avoid bogus DST issues.
bool QDateTimeParser::fromString(const QString &t, QDate *date, QTime *time) const
{
- QDateTime datetime;
- if (!fromString(t, &datetime))
+ QDateTime val(QDate(1900, 1, 1).startOfDay(Qt::UTC));
+ const StateNode tmp = parse(t, -1, val, false);
+ if (tmp.state != Acceptable || tmp.conflicts)
return false;
if (time) {
- const QTime t = datetime.time();
+ Q_ASSERT(!date);
+ const QTime t = tmp.value.time();
if (!t.isValid())
return false;
*time = t;
}
if (date) {
- const QDate d = datetime.date();
+ Q_ASSERT(!time);
+ const QDate d = tmp.value.date();
if (!d.isValid())
return false;
*date = d;
@@ -2220,7 +2224,8 @@ bool QDateTimeParser::fromString(const QString &t, QDate *date, QTime *time) con
return true;
}
-bool QDateTimeParser::fromString(const QString &t, QDateTime* datetime) const
+// Only called when we want both date and time; default to local time.
+bool QDateTimeParser::fromString(const QString &t, QDateTime *datetime) const
{
QDateTime val(QDate(1900, 1, 1).startOfDay());
const StateNode tmp = parse(t, -1, val, false);