diff options
Diffstat (limited to 'src/corelib/time/qdatetimeparser.cpp')
-rw-r--r-- | src/corelib/time/qdatetimeparser.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/corelib/time/qdatetimeparser.cpp b/src/corelib/time/qdatetimeparser.cpp index d8b6b17db0..cce32e7ad2 100644 --- a/src/corelib/time/qdatetimeparser.cpp +++ b/src/corelib/time/qdatetimeparser.cpp @@ -334,7 +334,7 @@ int QDateTimeParser::sectionPos(int sectionIndex) const return sectionPos(sectionNode(sectionIndex)); } -int QDateTimeParser::sectionPos(const SectionNode &sn) const +int QDateTimeParser::sectionPos(SectionNode sn) const { switch (sn.type) { case FirstSection: return 0; @@ -1012,7 +1012,7 @@ static int yearInCenturyFrom(int y2d, int baseYear) when on valid date is consistent with the data. */ -static QDate actualDate(QDateTimeParser::Sections known, const QCalendar &calendar, int baseYear, +static QDate actualDate(QDateTimeParser::Sections known, QCalendar calendar, int baseYear, int year, int year2digits, int month, int day, int dayofweek) { QDate actual(year, month, day, calendar); @@ -1277,7 +1277,7 @@ QDateTimeParser::scanString(const QDateTime &defaultValue, bool fixup) const if (fixup && sect.state == Intermediate && sect.used < sn.count) { const FieldInfo fi = fieldInfo(index); if ((fi & (Numeric|FixedWidth)) == (Numeric|FixedWidth)) { - const QString newText = QString("%1"_L1).arg(sect.value, sn.count, 10, '0'_L1); + const QString newText = QString::asprintf("%0*d", sn.count, sect.value); m_text.replace(pos, sect.used, newText); sect.used = sn.count; } @@ -1360,13 +1360,15 @@ QDateTimeParser::scanString(const QDateTime &defaultValue, bool fixup) const if (parserType != QMetaType::QTime) { if (year % 100 != year2digits && (isSet & YearSection2Digits)) { + const QDate date = actualDate(isSet, calendar, defaultCenturyStart, + year, year2digits, month, day, dayofweek); if (!(isSet & YearSection)) { - year = yearInCenturyFrom(year2digits, defaultCenturyStart); + year = date.year(); } else { conflicts = true; const SectionNode &sn = sectionNode(currentSectionIndex); if (sn.type == YearSection2Digits) - year = yearInCenturyFrom(year2digits, defaultCenturyStart); + year = date.year(); } } @@ -2312,11 +2314,9 @@ QString QDateTimeParser::getAmPmText(AmPm ap, Case cs) const /* \internal - - I give arg2 preference because arg1 is always a QDateTime. */ -bool operator==(const QDateTimeParser::SectionNode &s1, const QDateTimeParser::SectionNode &s2) +bool operator==(QDateTimeParser::SectionNode s1, QDateTimeParser::SectionNode s2) { return (s1.type == s2.type) && (s1.pos == s2.pos) && (s1.count == s2.count); } @@ -2325,7 +2325,7 @@ bool operator==(const QDateTimeParser::SectionNode &s1, const QDateTimeParser::S Sets \a cal as the calendar to use. The default is Gregorian. */ -void QDateTimeParser::setCalendar(const QCalendar &cal) +void QDateTimeParser::setCalendar(QCalendar cal) { calendar = cal; } |