74 friend class QCalendar;
75 friend class QtPrivate::QCalendarRegistry;
76 Q_DISABLE_COPY_MOVE(QCalendarBackend)
79 QCalendarBackend() =
default;
80 virtual ~QCalendarBackend();
81 virtual QString name()
const = 0;
83 QStringList names()
const;
85 QCalendar::System calendarSystem()
const;
86 QCalendar::SystemId calendarId()
const {
return m_id; }
88 virtual int daysInMonth(
int month,
int year = QCalendar::Unspecified)
const = 0;
89 virtual int daysInYear(
int year)
const;
90 virtual int monthsInYear(
int year)
const;
91 virtual bool isDateValid(
int year,
int month,
int day)
const;
93 virtual bool isLeapYear(
int year)
const = 0;
94 virtual bool isLunar()
const = 0;
95 virtual bool isLuniSolar()
const = 0;
96 virtual bool isSolar()
const = 0;
97 virtual bool isProleptic()
const;
98 virtual bool hasYearZero()
const;
99 virtual int maximumDaysInMonth()
const;
100 virtual int minimumDaysInMonth()
const;
101 virtual int maximumMonthsInYear()
const;
103 virtual bool dateToJulianDay(
int year,
int month,
int day, qint64 *jd)
const = 0;
104 virtual QCalendar::YearMonthDay julianDayToDate(qint64 jd)
const = 0;
106 virtual int dayOfWeek(qint64 jd)
const;
107 virtual qint64 matchCenturyToWeekday(
const QCalendar::YearMonthDay &parts,
int dow)
const;
110 virtual QString monthName(
const QLocale &locale,
int month,
int year,
111 QLocale::FormatType format)
const;
112 virtual QString standaloneMonthName(
const QLocale &locale,
int month,
int year,
113 QLocale::FormatType format)
const;
114 virtual QString weekDayName(
const QLocale &locale,
int day,
115 QLocale::FormatType format)
const;
116 virtual QString standaloneWeekDayName(
const QLocale &locale,
int day,
117 QLocale::FormatType format)
const;
120 virtual QString dateTimeToString(QStringView format,
const QDateTime &datetime,
121 QDate dateOnly, QTime timeOnly,
122 const QLocale &locale)
const;
124 bool isGregorian()
const;
126 QCalendar::SystemId registerCustomBackend(
const QStringList &names);
129 static QStringList availableCalendars();
133 virtual const QCalendarLocale *localeMonthIndexData()
const = 0;
134 virtual const char16_t *localeMonthData()
const = 0;
137 QCalendar::SystemId m_id;
139 void setIndex(size_t index);
142 static const QCalendarBackend *fromName(QAnyStringView name);
143 static const QCalendarBackend *fromId(QCalendar::SystemId id);
145 static const QCalendarBackend *fromEnum(QCalendar::System system);
146 static const QCalendarBackend *gregorian();