QCalendar 类

QCalendar 类描述了日历系统。 更多...

头文件 #include <QCalendar>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

注意: 本类中所有函数均可重入

公共类型

(自 6.2) classSystemId
枚举类System { 公历, 罗马历, 米兰科维奇, 健唑历, 伊斯兰文明}

公共函数

QCalendar()
QCalendar(QCalendar::System system)
QCalendar(QAnyStringView name)
(since 6.2) QCalendar(QCalendar::SystemId id)
QDatedateFromParts(int year, int month, int day) const
QDatedateFromParts(const QCalendar::YearMonthDay &parts) const
QStringdateTimeToString(QStringView format, const QDateTime &datetime, QDate dateOnly, QTime timeOnly, const QLocale &locale) const
intdayOfWeek(QDate date) const
intdaysInMonth(int month, int year = Unspecified) const
intdaysInYear(int year) const
boolhasYearZero() const
boolisDateValid(int year, int month, int day) const
boolisGregorian() const
boolisLeapYear(int year) const
boolisLunar() const
boolisLuniSolar() const
boolisProleptic() const
boolisSolar() const
boolisValid() const
(自 6.7) QDatematchCenturyToWeekday(const QCalendar::YearMonthDay &parts, int dow) const
intmaximumDaysInMonth() const
intmaximumMonthsInYear() const
intminimumDaysInMonth() const
QStringmonthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const
intmonthsInYear(int year) const
QStringname() const
QCalendar::YearMonthDaypartsFromDate(QDate date) const
QStringstandaloneMonthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const
QStringstandaloneWeekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const
QStringweekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const

静态公共成员

QStringListavailableCalendars()

详细描述

A QCalendar对象将年和月日数字映射到特定的日期(最终由其儒略日数字标识),使用特定系统的规则。

默认的QCalendar()是前推的格里高利日历,没有年份零。其他日历可以通过启用支持的功能或加载插件来得到支持。可以通过传递QCalendar::System枚举到构造函数来构建支持的功能中的日历。一旦它们被构建,可以通过名称构建所有支持的日历。(因此插件通过实例化他们的日历后端来注册它。)通过QCalendar::System可访问的内置后端也可以通过名称始终可用。使用自定义后端的日历也可以通过构造时分配给后端的唯一ID来构建。

QCalendar值是不可变的。

另见 QDateQDateTime

成员类型文档

enum class QCalendar::System

该枚举类型用于指定日历系统的选择。

常量描述
QCalendar::System::Gregorian0默认日历,用于国际。
QCalendar::System::Julian8古代罗马日历。
QCalendar::System::Milankovic9一些东正教会使用的修正后的儒略日历。
QCalendar::System::Jalali10太阳历(也称波斯历)。
QCalendar::System::IslamicCivil11(表格)伊斯兰教民历。

另见 QCalendarQCalendar::SystemId

成员函数文档

[显式] QCalendar::QCalendar()

[显式] QCalendar::QCalendar(QAnyStringView name)

[显式] QCalendar::QCalendar(QCalendar::System system)

构建一个日历对象。

可以通过使用枚举QCalendar::Systemsystem来指定要使用的日历,或者通过使用字符串(可以是Unicode或拉丁1)的name来指定。通过名称构建可能依赖于首先通过其他方式构建给定日历的实例。如果没有参数,默认构造函数返回格里高利日历。

注意:在6.4之前的Qt版本中,name构造函数只能接受QStringViewQLatin1String,而不是QAnyStringView

参阅 QCalendarSystemisValid()。

QDate QCalendar::dateFromParts(const QCalendar::YearMonthDay &parts) const

QDate QCalendar::dateFromParts(int year, int month, int day) const

将年、月、日转换为 QDate

年、月和日可以作为单独的数字传递,也可以作为 parts 的成员一起打包传递。如果在这个日历中有指定的年、月和日,则返回一个 QDate。如果不是,包括任何值为 QCalendar::Unspecified 的情况,则返回一个 QDate,其 isNull() 为 true。

参阅 isDateValid() 和 partsFromDate

[显式,自 6.2 版起] QCalendar::QCalendar(QCalendar::SystemId id)

这是一个重载函数。

构建一个日历对象。

当使用自定义日历实现时,其后端在创建时分配了一个唯一的 ID;将此 ID 作为 id 传递给此构造函数将获取使用该后端的一个 QCalendar。这在不通过名称注册后端时很有用。

此函数自 Qt 6.2 版本开始引入。

[静态] QStringList QCalendar::availableCalendars()

返回可用日历系统的名称列表。

这些可能由插件或其他链接到应用程序中的代码提供,此外还有 Qt 提供的,其中一些受功能控制。

QString QCalendar::dateTimeToString(QStringView format, const QDateTime &datetime, QDate dateOnly, QTime timeOnly, const QLocale &locale) const

返回表示给定日期、时间或日期时间的字符串。

如果 datetime 有效,它将被表示,日期和时间字段都将识别格式说明符;否则,如果 dateOnly 有效,它将被表示,并且只识别日期字段的格式说明符;最后,如果 timeOnly 有效,它将被表示,并且只识别时间字段的格式说明符。如果没有这些有效,则返回空字符串。

有关支持的字段说明符,请参阅 QDate::toStringQTime::toString()。在 format 中识别为字段说明符的字符将被替换为表示日期和/或时间的适当数据的文本。表示它们的文本可能取决于指定的 locale。将其他字符原封不动地复制到返回的字符串中。

另请参阅 monthName(),weekDayName(),QDate::toString(),以及QTime::toString()。

int QCalendar::dayOfWeek(QDate date) const

返回给定日期的星期数。

如果日历无法表示指示的日期,则返回0。返回1代表星期一,至7代表星期日。具有闰日的日历可能使用其他数字来表示这些日期。

另请参阅 partsFromDate() 和 Qt::DayOfWeek

int QCalendar::daysInMonth(int month, int year = Unspecified) const

返回给定年份中给定月份的天数。

月份连续编号,从每年的第一个月开始编号为1。如果年份为Unspecified(如果没有传递,则为默认值),则返回正常年份中该月的天数。

另请参阅 maximumDaysInMonth() 和 minimumDaysInMonth

int QCalendar::daysInYear(int year) const

返回给定年份的天数。

将Unspecified作为年份的处理是不确定的。

bool QCalendar::hasYearZero() const

如果此日历有一个公元零年,则返回true

日历可能表示从它的第一年开始的年份,但提供不了描述它之前年份的方法;这样的日历没有公元零年,不是前瞻性的。

日历可能表示它第一年之前的年份,只是简单地遵循常见的整数计数,这样第一年之前的是公元零年,然后是负编号的年份;这样的日历是前瞻性的,有公元零年。这样的日历也可能有公元零年(例如,一些重大事件的年份,之后年份是以这次事件后的第一年、第二年等来计),而不描述公元零年之前的一年。这样的日历会有公元零年,但不是前瞻性的。

然而,一些日历通过另一种编号表示它们第一年之前的年份;例如,前瞻性的格里高利日历的第一年是公元1年,之前的一年是公元前1年,然后是公元前2年等等。在这种情况下,我们使用负年份编号进行这种另一编号,其中年份-1是1年之前,年份-2是-1年之前,以此类推。这样的日历是前瞻性的,但没有公元零年。

另请参阅 isProleptic

bool QCalendar::isDateValid(int year, int month, int day) const

如果给定的指定了一个有效的日期,则返回true

通常这意味着1 <= month <= monthsInYear(year) 且 1 <= day <= daysInMonth(month, year)。但是,有闰日或月份的日历可能会使这复杂化。

bool QCalendar::isGregorian() const

如果此日历对象是其他Qt API默认使用的公历对象,则返回true,例如在QDate中。

bool QCalendar::isLeapYear(int year) const

如果指定的year是闰年,则返回true

由于年份不是整天的整数倍,有些年份比其他年份长。这种差异可能是一个整月,或者只是单一天;具体细节因日历而异。

另请参阅 isDateValid()。

bool QCalendar::isLunar() const

如果这个日历是农历,则返回true

农历主要是基于月亮的相位。

bool QCalendar::isLuniSolar() const

如果这个日历是阴阳历,则返回true

阴阳历表达了月亮的相位,同时也适应了对太阳在天空中的变化位置进行跟踪,相对于固定星座。

bool QCalendar::isProleptic() const

如果这个日历是前推日历,则返回true

前推日历能够描述与其起始年份不确定长度的时间。这些表示为负年份数字,并可能包含一个年份零。

另请参阅 hasYearZero()。

bool QCalendar::isSolar() const

如果这个日历是阳历,则返回true

阳历主要是基于太阳在天空中的变化位置,相对于固定星座。

bool QCalendar::isValid() const

如果这是一个有效的日历对象,则返回true。

使用未知的日历名称构造日历可能会导致无效对象。在按名称创建日历后使用此方法进行检查。

[自 6.7] QDate QCalendar::matchCenturyToWeekday(const QCalendar::YearMonthDay &parts, int dow) const

调整日期的世纪以匹配给定的星期。

当给出一个日期的星期、月、月份和年份的最后两位时使用。返回一个以给定的dow作为星期,并匹配给定parts月份和月份中的日子QDate实例的dayOfWeek,返回的QDateyear()应该与parts.year的100倍数不同,优先选择小型倍数和正倍数而不是它们的负倍数。

如果没有日期符合这些条件,将返回一个无效的QDate:星期与提供的数据不匹配。例如,在格里高利历中,由于400年的周期是整个星期的整数倍长,因此给定月份和该月中的任何给定天数,在给出的最后两位年份中,永远只会落在星期的四天中。(特殊情况:在世纪末的2月29日,当它是闰年时,只有一种可能的星期:星期二。)

此功能是在Qt 6.7中引入的。

int QCalendar::maximumDaysInMonth() const

返回日历中任何年份最长月份中的天数。

另请参阅 daysInMonth() 和 minimumDaysInMonth().

int QCalendar::maximumMonthsInYear() const

返回任何一年可以包含的最大月份数。

另请参阅 monthName()、standaloneMonthName() 和 monthsInYear().

int QCalendar::minimumDaysInMonth() const

返回日历中任何一年最短月份的天数。

另请参阅 daysInMonth() 和 maximumDaysInMonth().

QString QCalendar::monthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const

返回一个月份的适当本地化名称。

月份由数字表示,其中 month = 1 表示一年的第一个月,后续月份按顺序编号。如果 month 数字不被识别,则返回空字符串。

year 可以为未指定,此时应使用典型一年月份的数字与其名称的映射。某些日历中有闰月,不一定在年底;此时月份数字与其名称的映射可能取决于闰月的放置。因此,如果已知,应通常指定年份。

返回的名称应以在指定 locale 中的完整日期中通常使用的格式返回;format 确定应该如何完整地表达(即缩写的程度)。

另请参阅 standaloneMonthName()、maximumMonthsInYear() 和 dateTimeToString().

int QCalendar::monthsInYear(int year) const

返回给定 year 中的月份数量。

如果 yearUnspecified,则返回一年中月份的最大数量。

另请参阅 maximumMonthsInYear().

QString QCalendar::name() const

此日历的主要名称。

该日历也可能有别名。通过名称实例化的日历可以使用这样的别名,在这种情况下,其 name() 不必与实例化的别名匹配。

QCalendar::YearMonthDay QCalendar::partsFromDate(QDate date) const

QDate 转换为年、月和日。

如果日历无法表示给定的 date,则返回的结构体的 isValid() 应为 false。否则,其年、月和日成员将记录其表示的相应部分。

另请参阅 dateFromParts()、isProleptic() 和 hasYearZero().

QString QCalendar::standaloneMonthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const

返回一个特定于地区的独立月份名称。

月份由数字表示,其中 month = 1 表示一年的第一个月,后续月份按顺序编号。如果 month 数字不被识别,则返回空字符串。

year 可以为未指定,此时应使用典型一年月份的数字与其名称的映射。某些日历中有闰月,不一定在年底;此时月份数字与其名称的映射可能取决于闰月的放置。因此,如果已知,应通常指定年份。

该名称将按照指定地区的独立形式返回;format 决定了其表达的程度(即缩写的程度)。

另请参阅monthName()、maximumMonthsInYear() 和 dateTimeToString()。

QString QCalendar::standaloneWeekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const

返回一个特定于地区的独立星期名称。

星期从星期一到星期日编号为1到7。一些日历可能支持其他天(如闰日,不属于任何一周)的更高数字。如果day编号不可识别,则返回空字符串。

该名称将以独立的形式返回,如指定地区(例如,作为日历的表格显示中月份的列标题)的使用形式;format 决定了其表达的程度(即缩写的程度)。

另请参阅weekDayName() 和 dayOfWeek()。

QString QCalendar::weekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const

返回一个特定于地区的星期名称。

星期从星期一到星期日编号为1到7。一些日历可能支持其他天(如闰日,不属于任何一周)的更高数字。如果day编号不可识别,则返回空字符串。

返回的名称应以在指定 locale 中的完整日期中通常使用的格式返回;format 确定应该如何完整地表达(即缩写的程度)。

另请参阅standaloneWeekDayName() 和 dayOfWeek()。

© 2024 Qt公司有限 spared。本记录中的文档贡献是各自所有者的版权。本记录中提供的文档是根据由自由软件基金会发布的GNU自由文档许可协议版本1.3许可的。Qt及其相关标志是芬兰及其它国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。