QCalendar 类
QCalendar 类描述了日历系统。 更多...
头文件 | #include <QCalendar> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
注意: 本类中所有函数均可重入。
公共类型
公共函数
QCalendar() | |
QCalendar(QCalendar::System system) | |
QCalendar(QAnyStringView name) | |
(since 6.2) | QCalendar(QCalendar::SystemId id) |
QDate | dateFromParts(int year, int month, int day) const |
QDate | dateFromParts(const QCalendar::YearMonthDay &parts) const |
QString | dateTimeToString(QStringView format, const QDateTime &datetime, QDate dateOnly, QTime timeOnly, const QLocale &locale) const |
int | dayOfWeek(QDate date) const |
int | daysInMonth(int month, int year = Unspecified) const |
int | daysInYear(int year) const |
bool | hasYearZero() const |
bool | isDateValid(int year, int month, int day) const |
bool | isGregorian() const |
bool | isLeapYear(int year) const |
bool | isLunar() const |
bool | isLuniSolar() const |
bool | isProleptic() const |
bool | isSolar() const |
bool | isValid() const |
(自 6.7) QDate | matchCenturyToWeekday(const QCalendar::YearMonthDay &parts, int dow) const |
int | maximumDaysInMonth() const |
int | maximumMonthsInYear() const |
int | minimumDaysInMonth() const |
QString | monthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const |
int | monthsInYear(int year) const |
QString | name() const |
QCalendar::YearMonthDay | partsFromDate(QDate date) const |
QString | standaloneMonthName(const QLocale &locale, int month, int year = Unspecified, QLocale::FormatType format = QLocale::LongFormat) const |
QString | standaloneWeekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const |
QString | weekDayName(const QLocale &locale, int day, QLocale::FormatType format = QLocale::LongFormat) const |
静态公共成员
QStringList | availableCalendars() |
详细描述
A QCalendar对象将年和月日数字映射到特定的日期(最终由其儒略日数字标识),使用特定系统的规则。
默认的QCalendar()是前推的格里高利日历,没有年份零。其他日历可以通过启用支持的功能或加载插件来得到支持。可以通过传递QCalendar::System枚举到构造函数来构建支持的功能中的日历。一旦它们被构建,可以通过名称构建所有支持的日历。(因此插件通过实例化他们的日历后端来注册它。)通过QCalendar::System可访问的内置后端也可以通过名称始终可用。使用自定义后端的日历也可以通过构造时分配给后端的唯一ID来构建。
QCalendar值是不可变的。
成员类型文档
enum class QCalendar::System
该枚举类型用于指定日历系统的选择。
常量 | 值 | 描述 |
---|---|---|
QCalendar::System::Gregorian | 0 | 默认日历,用于国际。 |
QCalendar::System::Julian | 8 | 古代罗马日历。 |
QCalendar::System::Milankovic | 9 | 一些东正教会使用的修正后的儒略日历。 |
QCalendar::System::Jalali | 10 | 太阳历(也称波斯历)。 |
QCalendar::System::IslamicCivil | 11 | (表格)伊斯兰教民历。 |
成员函数文档
[显式]
QCalendar::QCalendar()
[显式]
QCalendar::QCalendar(QAnyStringView name)
[显式]
QCalendar::QCalendar(QCalendar::System system)
构建一个日历对象。
可以通过使用枚举QCalendar::System的system来指定要使用的日历,或者通过使用字符串(可以是Unicode或拉丁1)的name来指定。通过名称构建可能依赖于首先通过其他方式构建给定日历的实例。如果没有参数,默认构造函数返回格里高利日历。
注意:在6.4之前的Qt版本中,name构造函数只能接受QStringView和QLatin1String,而不是QAnyStringView。
参阅 QCalendar,System 和 isValid()。
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::toString 和 QTime::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,返回的QDate的year()应该与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 中的月份数量。
如果 year 为 Unspecified
,则返回一年中月份的最大数量。
另请参阅 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公司的商标。所有其他商标均为其各自所有者的财产。