60 friend class QCalendar;
61 friend class QtPrivate::QCalendarRegistry;
62 Q_DISABLE_COPY_MOVE(QCalendarBackend)
65 QCalendarBackend() =
default;
66 virtual ~QCalendarBackend();
67 virtual QString name()
const = 0;
69 QStringList names()
const;
71 QCalendar::System calendarSystem()
const;
72 QCalendar::SystemId calendarId()
const {
return m_id; }
74 virtual int daysInMonth(
int month,
int year = QCalendar::Unspecified)
const = 0;
75 virtual int daysInYear(
int year)
const;
76 virtual int monthsInYear(
int year)
const;
77 virtual bool isDateValid(
int year,
int month,
int day)
const;
79 virtual bool isLeapYear(
int year)
const = 0;
80 virtual bool isLunar()
const = 0;
81 virtual bool isLuniSolar()
const = 0;
82 virtual bool isSolar()
const = 0;
83 virtual bool isProleptic()
const;
84 virtual bool hasYearZero()
const;
85 virtual int maximumDaysInMonth()
const;
86 virtual int minimumDaysInMonth()
const;
87 virtual int maximumMonthsInYear()
const;
89 virtual bool dateToJulianDay(
int year,
int month,
int day, qint64 *jd)
const = 0;
90 virtual QCalendar::YearMonthDay julianDayToDate(qint64 jd)
const = 0;
92 virtual int dayOfWeek(qint64 jd)
const;
93 virtual qint64 matchCenturyToWeekday(
const QCalendar::YearMonthDay &parts,
int dow)
const;
96 virtual QString monthName(
const QLocale &locale,
int month,
int year,
97 QLocale::FormatType format)
const;
98 virtual QString standaloneMonthName(
const QLocale &locale,
int month,
int year,
99 QLocale::FormatType format)
const;
100 virtual QString weekDayName(
const QLocale &locale,
int day,
101 QLocale::FormatType format)
const;
102 virtual QString standaloneWeekDayName(
const QLocale &locale,
int day,
103 QLocale::FormatType format)
const;
106 virtual QString dateTimeToString(QStringView format,
const QDateTime &datetime,
107 QDate dateOnly, QTime timeOnly,
108 const QLocale &locale)
const;
110 bool isGregorian()
const;
112 QCalendar::SystemId registerCustomBackend(
const QStringList &names);
115 static QStringList availableCalendars();
119 virtual const QCalendarLocale *localeMonthIndexData()
const = 0;
120 virtual const char16_t *localeMonthData()
const = 0;
123 QCalendar::SystemId m_id;
125 void setIndex(size_t index);
128 static const QCalendarBackend *fromName(QAnyStringView name);
129 static const QCalendarBackend *fromId(QCalendar::SystemId id);
131 static const QCalendarBackend *fromEnum(QCalendar::System system);
132 static const QCalendarBackend *gregorian();