summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/compat/removed_api.cpp16
-rw-r--r--src/corelib/text/qlocale.cpp17
-rw-r--r--src/corelib/text/qlocale.h20
-rw-r--r--src/corelib/time/qdatetime.h29
-rw-r--r--src/corelib/time/qdatetimeparser_p.h4
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.