diff options
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/compat/removed_api.cpp | 16 | ||||
-rw-r--r-- | src/corelib/text/qlocale.cpp | 17 | ||||
-rw-r--r-- | src/corelib/text/qlocale.h | 20 | ||||
-rw-r--r-- | src/corelib/time/qdatetime.h | 29 | ||||
-rw-r--r-- | src/corelib/time/qdatetimeparser_p.h | 4 |
5 files changed, 53 insertions, 33 deletions
diff --git a/src/corelib/compat/removed_api.cpp b/src/corelib/compat/removed_api.cpp index 87b2d14916..0b2dfb57fb 100644 --- a/src/corelib/compat/removed_api.cpp +++ b/src/corelib/compat/removed_api.cpp @@ -794,42 +794,42 @@ QString QLocale::bcp47Name() const QDate QLocale::toDate(const QString &string, FormatType format) const { - return toDate(string, dateFormat(format), FirstTwoDigitYear); + return toDate(string, dateFormat(format), DefaultTwoDigitBaseYear); } QDate QLocale::toDate(const QString &string, FormatType format, QCalendar cal) const { - return toDate(string, dateFormat(format), cal, FirstTwoDigitYear); + return toDate(string, dateFormat(format), cal, DefaultTwoDigitBaseYear); } QDateTime QLocale::toDateTime(const QString &string, FormatType format) const { - return toDateTime(string, dateTimeFormat(format), FirstTwoDigitYear); + return toDateTime(string, dateTimeFormat(format), DefaultTwoDigitBaseYear); } QDateTime QLocale::toDateTime(const QString &string, FormatType format, QCalendar cal) const { - return toDateTime(string, dateTimeFormat(format), cal, FirstTwoDigitYear); + return toDateTime(string, dateTimeFormat(format), cal, DefaultTwoDigitBaseYear); } QDate QLocale::toDate(const QString &string, const QString &format) const { - return toDate(string, format, QCalendar(), FirstTwoDigitYear); + return toDate(string, format, QCalendar(), DefaultTwoDigitBaseYear); } QDate QLocale::toDate(const QString &string, const QString &format, QCalendar cal) const { - return toDate(string, format, cal, FirstTwoDigitYear); + return toDate(string, format, cal, DefaultTwoDigitBaseYear); } QDateTime QLocale::toDateTime(const QString &string, const QString &format) const { - return toDateTime(string, format, QCalendar(), FirstTwoDigitYear); + return toDateTime(string, format, QCalendar(), DefaultTwoDigitBaseYear); } QDateTime QLocale::toDateTime(const QString &string, const QString &format, QCalendar cal) const { - return toDateTime(string, format, cal, FirstTwoDigitYear); + return toDateTime(string, format, cal, DefaultTwoDigitBaseYear); } #include "qobject.h" diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp index 65af3a012d..7e08903055 100644 --- a/src/corelib/text/qlocale.cpp +++ b/src/corelib/text/qlocale.cpp @@ -54,6 +54,8 @@ QT_WARNING_DISABLE_GCC("-Wfree-nonheap-object") // false positive tracking QT_BEGIN_NAMESPACE +constexpr int QLocale::DefaultTwoDigitBaseYear; + QT_IMPL_METATYPE_EXTERN_TAGGED(QList<Qt::DayOfWeek>, QList_Qt__DayOfWeek) #ifndef QT_NO_SYSTEMLOCALE QT_IMPL_METATYPE_EXTERN_TAGGED(QSystemLocale::CurrencyToStringArgument, @@ -1001,6 +1003,21 @@ QLocale::QLocale(QLocalePrivate &dd) : d(&dd) {} +/*! + \variable QLocale::DefaultTwoDigitBaseYear + \since 6.7 + + \brief The default start year of the century within which a format taking + a two-digit year will select. The value of the constant is \c {1900}. + + Some locales use, particularly for ShortFormat, only the last two digits of + the year. Proir to 6.7 the year 1900 was always used as a base year for + such cases. Now various QLocale and QDate functions have the overloads that + allow callers to specify the base year, and this constant is used as its + default value. + + \sa toDate(), toDateTime(), QDate::fromString(), QDateTime::fromString() +*/ /*! \since 6.3 diff --git a/src/corelib/text/qlocale.h b/src/corelib/text/qlocale.h index bc04ae5cdc..3027067363 100644 --- a/src/corelib/text/qlocale.h +++ b/src/corelib/text/qlocale.h @@ -35,9 +35,9 @@ class Q_CORE_EXPORT QLocale friend class QTextStream; friend class QTextStreamPrivate; - static constexpr int FirstTwoDigitYear = 1900; // sync with QDate - public: + static constexpr int DefaultTwoDigitBaseYear = 1900; + // see qlocale_data_p.h for more info on generated data // GENERATED PART STARTS HERE enum Language : ushort { @@ -1030,22 +1030,22 @@ public: QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal) const; # endif QDate toDate(const QString &string, FormatType = LongFormat, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; QDate toDate(const QString &string, const QString &format, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; QDateTime toDateTime(const QString &string, FormatType format = LongFormat, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; QDateTime toDateTime(const QString &string, const QString &format, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; // Calendar-aware API QDate toDate(const QString &string, FormatType format, QCalendar cal, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; QDate toDate(const QString &string, const QString &format, QCalendar cal, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal, - int baseYear = FirstTwoDigitYear) const; + int baseYear = DefaultTwoDigitBaseYear) const; #endif QString decimalPoint() const; diff --git a/src/corelib/time/qdatetime.h b/src/corelib/time/qdatetime.h index ce58520475..518705fca7 100644 --- a/src/corelib/time/qdatetime.h +++ b/src/corelib/time/qdatetime.h @@ -7,6 +7,7 @@ #include <QtCore/qcalendar.h> #include <QtCore/qcompare.h> +#include <QtCore/qlocale.h> #include <QtCore/qnamespace.h> #include <QtCore/qshareddata.h> #include <QtCore/qstring.h> @@ -27,7 +28,6 @@ class QDateTime; class Q_CORE_EXPORT QDate { explicit constexpr QDate(qint64 julianDay) : jd(julianDay) {} - static constexpr int FirstTwoDigitYear = 1900; // sync with QLocale public: constexpr QDate() : jd(nullJd()) {} QDate(int y, int m, int d); @@ -135,21 +135,24 @@ public: // Accept calendar without over-ride of base year: static QDate fromString(QStringView string, QStringView format, QCalendar cal) - { return fromString(string.toString(), format, FirstTwoDigitYear, cal); } + { return fromString(string.toString(), format, QLocale::DefaultTwoDigitBaseYear, cal); } QT_CORE_INLINE_SINCE(6, 7) static QDate fromString(const QString &string, QStringView format, QCalendar cal); static QDate fromString(const QString &string, const QString &format, QCalendar cal) - { return fromString(string, qToStringViewIgnoringNull(format), FirstTwoDigitYear, cal); } + { return fromString(string, qToStringViewIgnoringNull(format), QLocale::DefaultTwoDigitBaseYear, cal); } // Overriding base year is likely more common than overriding calendar (and // likely to get more so, as the legacy base drops ever further behind us). static QDate fromString(QStringView string, QStringView format, - int baseYear = FirstTwoDigitYear, QCalendar cal = QCalendar()) + int baseYear = QLocale::DefaultTwoDigitBaseYear, + QCalendar cal = QCalendar()) { return fromString(string.toString(), format, baseYear, cal); } static QDate fromString(const QString &string, QStringView format, - int baseYear = FirstTwoDigitYear, QCalendar cal = QCalendar()); + int baseYear = QLocale::DefaultTwoDigitBaseYear, + QCalendar cal = QCalendar()); static QDate fromString(const QString &string, const QString &format, - int baseYear = FirstTwoDigitYear, QCalendar cal = QCalendar()) + int baseYear = QLocale::DefaultTwoDigitBaseYear, + QCalendar cal = QCalendar()) { return fromString(string, qToStringViewIgnoringNull(format), baseYear, cal); } #endif static bool isValid(int y, int m, int d); @@ -439,23 +442,23 @@ public: // Accept calendar without over-ride of base year: static QDateTime fromString(QStringView string, QStringView format, QCalendar cal) - { return fromString(string.toString(), format, QDate::FirstTwoDigitYear, cal); } + { return fromString(string.toString(), format, QLocale::DefaultTwoDigitBaseYear, cal); } QT_CORE_INLINE_SINCE(6, 7) static QDateTime fromString(const QString &string, QStringView format, QCalendar cal); static QDateTime fromString(const QString &string, const QString &format, QCalendar cal) - { return fromString(string, qToStringViewIgnoringNull(format), QDate::FirstTwoDigitYear, cal); } + { return fromString(string, qToStringViewIgnoringNull(format), QLocale::DefaultTwoDigitBaseYear, cal); } // Overriding base year is likely more common than overriding calendar (and // likely to get more so, as the legacy base drops ever further behind us). static QDateTime fromString(QStringView string, QStringView format, - int baseYear = QDate::FirstTwoDigitYear, + int baseYear = QLocale::DefaultTwoDigitBaseYear, QCalendar cal = QCalendar()) { return fromString(string.toString(), format, baseYear, cal); } static QDateTime fromString(const QString &string, QStringView format, - int baseYear = QDate::FirstTwoDigitYear, + int baseYear = QLocale::DefaultTwoDigitBaseYear, QCalendar cal = QCalendar()); static QDateTime fromString(const QString &string, const QString &format, - int baseYear = QDate::FirstTwoDigitYear, + int baseYear = QLocale::DefaultTwoDigitBaseYear, QCalendar cal = QCalendar()) { return fromString(string, qToStringViewIgnoringNull(format), baseYear, cal); } #endif @@ -626,12 +629,12 @@ Q_CORE_EXPORT size_t qHash(QTime key, size_t seed = 0) noexcept; #if QT_CORE_INLINE_IMPL_SINCE(6, 7) QDate QDate::fromString(const QString &string, QStringView format, QCalendar cal) { - return fromString(string, format, FirstTwoDigitYear, cal); + return fromString(string, format, QLocale::DefaultTwoDigitBaseYear, cal); } QDateTime QDateTime::fromString(const QString &string, QStringView format, QCalendar cal) { - return fromString(string, format, QDate::FirstTwoDigitYear, cal); + return fromString(string, format, QLocale::DefaultTwoDigitBaseYear, cal); } #endif diff --git a/src/corelib/time/qdatetimeparser_p.h b/src/corelib/time/qdatetimeparser_p.h index 53d48c1009..6fc4121e08 100644 --- a/src/corelib/time/qdatetimeparser_p.h +++ b/src/corelib/time/qdatetimeparser_p.h @@ -137,7 +137,7 @@ public: StateNode parse(const QString &input, int position, const QDateTime &defaultValue, bool fixup) const; bool fromString(const QString &text, QDate *date, QTime *time, - int baseYear = QDate::FirstTwoDigitYear) const; + int baseYear = QLocale::DefaultTwoDigitBaseYear) const; bool fromString(const QString &text, QDateTime *datetime, int baseYear) const; bool parseFormat(QStringView format); @@ -236,7 +236,7 @@ protected: // for the benefit of QDateTimeEditPrivate virtual QLocale locale() const { return defaultLocale; } mutable int currentSectionIndex = int(NoSectionIndex); - mutable int defaultCenturyStart = QDate::FirstTwoDigitYear; + mutable int defaultCenturyStart = QLocale::DefaultTwoDigitBaseYear; Sections display; /* This stores the most recently selected day. |