PySide6.QtCore.QDate

class QDate

QDate 类提供了日期函数。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

一个QDate对象代表一个特定的日期,无论创建它时使用的日历、区域设置或其他系统提供的设置如何。它可以报告代表该日期的年、月和日,这些信息是基于公历或任何作为QCalendar对象提供的日历。QDate对象应通过值传递,而不是通过常量引用传递;它们只是封装了qint64

一个QDate对象通常通过明确给出年、月、日数字来创建。请注意,QDate将小于100的年数解释为原样呈现,即1到99年,不添加任何偏移量。静态函数currentDate()创建一个QDate对象,其中包含从系统时钟读取的日期。也可以使用setDate()设置明确的日期。fromString()函数根据给定的字符串和日期格式返回一个QDate,该格式用于解释字符串中的日期。

year()month()day() 函数提供了对年、月和日数字的访问。当需要多个这些值时,调用 partsFromDate() 会更高效,以避免重复(可能昂贵的)日历计算。

此外,还提供了dayOfWeek()dayOfYear()函数。相同的信息以文本格式由toString()提供。QLocale可以将日期编号映射到名称,QCalendar可以将月份编号映射到名称。

QDate 提供了一整套操作符来比较两个 QDate 对象,其中较小的表示较早的日期,较大的表示较晚的日期。

您可以使用addDays()来增加(或减少)给定天数的日期。同样,您可以使用addMonths()addYears()daysTo()函数返回两个日期之间的天数。

daysInMonth()daysInYear() 函数分别返回该日期所在月份和年份的天数。isLeapYear() 函数指示日期是否在闰年中。QCalendar 也可以提供这些信息,在某些情况下更方便。

备注

注意

所有与字符串格式之间的转换都是使用C语言环境完成的。对于本地化转换,请参见QLocale

在公历中,没有公元0年。该年的日期被视为无效。年份-1是“公元前1年”或“公元前1年”。公元1年1月1日的前一天,QDate (1, 1, 1),是公元前1年12月31日,QDate (-1, 12, 31)。其他各种日历也有类似的行为;请参阅hasYearZero()

有效日期范围

日期在内部存储为儒略日数,这是一个连续范围内的每一天的整数计数,格里高利历中的公元前4714年11月24日是儒略日0(儒略历中的公元前4713年1月1日)。除了作为一种高效且准确的存储绝对日期的方式外,它还适用于将日期转换为其他日历系统,如希伯来、伊斯兰或中国日历。可以使用toJulianDay()获取儒略日数,并使用fromJulianDay()设置。

由于技术原因,QDate 可以表示的儒略日数范围被限制在 -784350574879 到 784354017364 之间,这意味着从公元前20亿年到公元20亿年。这比 QDateTime 可以表示的日期范围宽了七倍多。

另请参阅

QTime QDateTime QCalendar YearRange QDateEditQDateTimeEditQCalendarWidget

__init__()

构造一个空日期。空日期是无效的。

另请参阅

isNull() isValid()

__init__(y, m, d)
Parameters:
  • y – 整数

  • m – 整数

  • d – 整数

构造一个日期,年份为y,月份为m,日期为d

日期是按照公历理解的。如果指定的日期无效,则不会设置日期,并且isValid()返回false

警告

年份1到99按原样解释。年份0无效。

另请参阅

isValid() dateFromParts()

__init__(y, m, d, cal)
Parameters:
  • y – 整数

  • m – 整数

  • d – 整数

  • calQCalendar

__reduce__()
Return type:

字符串

__repr__()
Return type:

字符串

addDays(days)
Parameters:

天数 – int

Return type:

QDate

返回一个包含比该对象日期晚ndays天的QDate对象(如果ndays为负数,则返回更早的日期)。

如果当前日期无效或新日期超出范围,则返回空日期。

addMonths(months)
Parameters:

月份 – int

Return type:

QDate

这是一个重载函数。

addMonths(months, cal)
Parameters:
Return type:

QDate

返回一个包含比该对象日期晚nmonths个月的QDate对象(如果nmonths为负数,则返回更早的日期)。

如果提供了cal作为日历,则使用它,否则使用公历。

注意

如果结束的日/月组合在结果月/年中不存在,此函数将返回所选月份中的最新有效日期。

另请参阅

addDays() addYears()

addYears(years)
Parameters:

年份 – int

Return type:

QDate

这是一个重载函数。

addYears(years, cal)
Parameters:
Return type:

QDate

返回一个包含比该对象日期晚nyears年的QDate对象(如果nyears为负数,则返回更早的日期)。

如果提供了cal作为日历,则使用它,否则使用公历。

注意

如果结束的日/月组合在结果年份中不存在(例如,对于公历,如果日期是2月29日且最终年份不是闰年),此函数将返回给定月份中的最新有效日期(在示例中为2月28日)。

另请参阅

addDays() addMonths()

static currentDate()
Return type:

QDate

返回系统时钟的当前日期。

day()
Return type:

整数

这是一个重载函数。

day(cal)
Parameters:

calQCalendar

Return type:

整数

返回此日期的月份中的第几天。

如果提供了cal作为日历,则使用它,否则使用公历(返回范围为1到31)。如果日期无效,则返回0。

dayOfWeek()
Return type:

整数

这是一个重载函数。

dayOfWeek(cal)
Parameters:

calQCalendar

Return type:

整数

返回此日期的星期几(1 = 星期一到7 = 星期日)。

如果提供了cal作为日历,则使用它,否则使用公历。如果日期无效,则返回0。某些日历可能会对大于7的值赋予特殊含义(例如闰日)。

dayOfYear()
Return type:

整数

这是一个重载函数。

dayOfYear(cal)
Parameters:

calQCalendar

Return type:

整数

返回此日期在一年中的第几天(第一天为1)。

如果提供了cal作为日历,则使用它,否则使用公历。如果日期或其年份的第一天无效,则返回0。

daysInMonth()
Return type:

整数

这是一个重载函数。

daysInMonth(cal)
Parameters:

calQCalendar

Return type:

整数

返回此日期所在月份的天数。

如果提供了cal作为日历,则使用它,否则使用公历(结果范围从28到31)。如果日期无效,则返回0。

daysInYear()
Return type:

整数

这是一个重载函数。

daysInYear(cal)
Parameters:

calQCalendar

Return type:

整数

返回此日期所在年份的天数。

如果提供了cal作为日历,则使用它,否则使用格里高利日历(结果为365或366)。如果日期无效,则返回0。

daysTo(d)
Parameters:

dQDate

Return type:

整数

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回从该日期到d的天数(如果d早于该日期,则为负数)。

如果任一日期无效,则返回0。

示例:

QDate d1(1995, 5, 17) # May 17, 1995
QDate d2(1995, 5, 20) # May 20, 1995
d1.daysTo(d2) # returns 3
d2.daysTo(d1) # returns -3

另请参阅

addDays()

endOfDay()
Return type:

QDateTime

这是一个重载函数。

endOfDay(zone)
Parameters:

区域QTimeZone

Return type:

QDateTime

返回一天的结束时刻。

一天的结束时间取决于时间的描述方式:对于位于更西时区的人来说,每一天的开始和结束时间会更早,而对于位于更东时区的人来说则会更晚。可以使用可选的时间zone来指定要使用的时间表示方式。默认的时间表示方式是系统的本地时间。

通常,一天的结束是午夜前的一毫秒,即24:00:然而,如果时区转换导致给定日期跳过那一刻(例如,夏令时向前跳过23:00及接下来的一个小时),则返回当天实际的最晚时间。这种情况只有在时间表示为时区或本地时间时才会发生。

zone的timeSpec()为OffsetFromUTCUTC时,时间表示没有转换,因此一天的结束是QTime (23, 59, 59, 999)。

在极少数情况下,如果日期被完全跳过(这种情况发生在国际日期变更线以东的区域切换到以西时),返回的结果将是无效的。传递一个无效的时区作为zone也会产生无效的结果,同样,超出QDateTime可表示范围的日期也会如此。

另请参阅

startOfDay()

endOfDay(spec[, offsetSeconds=0])
Parameters:
  • specTimeSpec

  • offsetSeconds – int

Return type:

QDateTime

注意

此函数已弃用。

这是一个重载函数。

Use endOfDay(const QTimeZone &) instead. Returns the end-moment of the day. When a day ends depends on a how time is described: each day starts and ends earlier for those with higher offsets from UTC and later for those with lower offsets from UTC. The time representation to use can be specified either by a \a spec and \a offsetSeconds (ignored unless \a spec is Qt::OffsetSeconds) or by a time zone. Usually, the end of the day is one millisecond before the midnight, 24:00: however, if a local time transition causes the given date to skip over that moment (e.g. a DST spring-forward skipping over 23:00 and the following hour), the actual latest time in the day is returned. When \a spec is Qt::OffsetFromUTC, \a offsetSeconds gives the implied zone's offset from UTC. As UTC and such zones have no transitions, the end of the day is QTime(23, 59, 59, 999) in these cases. In the rare case of a date that was entirely skipped (this happens when a zone east of the international date-line switches to being west of it), the return shall be invalid. Passing Qt::TimeZone as \a spec (instead of passing a QTimeZone) will also produce an invalid result, as shall dates that end outside the range representable by QDateTime.

static fromJulianDay(jd_)
Parameters:

jd – 整数

Return type:

QDate

将儒略日 jd 转换为 QDate

另请参阅

toJulianDay()

static fromString(string[, format=Qt.TextDate])
Parameters:
Return type:

QDate

这是一个重载函数。

static fromString(string[, format=Qt.TextDate])
Parameters:
Return type:

QDate

返回由string表示的QDate,使用给定的format,如果字符串无法解析,则返回无效日期。

注意 TextDate : 仅识别英文月份名称(例如缩写形式的“Jan”或完整形式的“January”)。

另请参阅

toString() toDate()

static fromString(string, format, cal)
Parameters:
  • 字符串 – str

  • format – str

  • calQCalendar

Return type:

QDate

这是一个重载函数。

static fromString(string, format[, baseYear=QLocale.DefaultTwoDigitBaseYear])
Parameters:
  • 字符串 – str

  • format – str

  • baseYear – int

Return type:

QDate

这是一个重载函数。

使用默认构造的QCalendar

static fromString(string, format, cal)
Parameters:
  • 字符串 – str

  • format – str

  • calQCalendar

Return type:

QDate

这是一个重载函数。

static fromString(string, format[, baseYear=QLocale.DefaultTwoDigitBaseYear])
Parameters:
  • 字符串 – str

  • format – str

  • baseYear – int

Return type:

QDate

这是一个重载函数。

使用默认构造的QCalendar

static fromString(string, format, cal)
Parameters:
  • 字符串 – str

  • format – str

  • calQCalendar

Return type:

QDate

这是一个重载函数。

static fromString(string, format[, baseYear=QLocale.DefaultTwoDigitBaseYear])
Parameters:
  • 字符串 – str

  • format – str

  • baseYear – int

Return type:

QDate

这是一个重载函数。

使用默认构造的QCalendar

static fromString(string, format, baseYear, cal)
Parameters:
  • 字符串 – str

  • format – str

  • baseYear – int

  • calQCalendar

Return type:

QDate

这是一个重载函数。

static fromString(string, format, baseYear, cal)
Parameters:
  • 字符串 – str

  • format – str

  • baseYear – int

  • calQCalendar

Return type:

QDate

这是一个重载函数。

static fromString(string, format, baseYear, cal)
Parameters:
  • 字符串 – str

  • format – str

  • baseYear – int

  • calQCalendar

Return type:

QDate

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回由string表示的QDate,使用给定的format,如果字符串无法解析,则返回无效日期。

如果提供了cal作为日历,则使用它,否则使用公历。下面格式描述中的值范围适用于后者;对于其他日历,这些范围可能不同。

这些表达式可以用于格式:

表达式

输出

d

不带前导零的日期数字(1到31)

dd

带有前导零的日期数字(01到31)

ddd

缩写的星期名称(‘Mon’ 到 ‘Sun’)。

dddd

长日期名称(‘星期一’ 到 ‘星期日’)。

M

月份为不带前导零的数字(1到12)

MM

月份,带前导零的数字(01 到 12)

MMM

缩写的月份名称('Jan' 到 'Dec')。

MMMM

长月份名称(‘一月’ 到 ‘十二月’)。

yy

年份为两位数(00 到 99)

yyyy

年份为四位数,可能加上前导减号表示负年份。

注意

日和月的名称必须用英语(C语言环境)给出。如果要识别本地化的月份和日期名称,请使用system() .toDate()。

所有其他输入字符将被视为文本。任何用单引号括起来的非空字符序列也将被视为文本(去掉引号),而不会被解释为表达式。例如:

date = QDate.fromString("1MM12car2003", "d'MM'MMcaryyyy")
# date is 1 December 2003

如果格式不满足,将返回一个无效的QDate。不期望前导零的表达式(d, M)将是贪婪的。这意味着即使这将使它们超出可接受的值范围,并且为其他部分留下太少的数字,它们也会使用两位数字。例如,以下格式字符串可能意味着1月30日,但M将抓取两位数字,导致无效日期:

date = QDate.fromString("130", "Md") # invalid()

对于格式中未表示的任何字段,使用以下默认值:

字段

默认值

年份

baseYear (或 1900)

月份

1 (一月)

1

format仅指定年份的最后两位数字时,首先考虑的是从baseYear开始的100年。在6.7版本之前,没有baseYear参数,总是使用1900年。这是baseYear的默认值,从那时到1999年选择一个年份。例如,传递1976作为baseYear将选择从1976年到2075年的年份。当格式还包括月份、日期(月份中的某一天)和星期几时,这些足以暗示世纪。在这种情况下,选择与baseYear指示的世纪最接近的匹配日期,优先选择较晚的世纪。有关更多详细信息,请参见matchCenturyToWeekday()Date ambiguities

以下示例展示了默认值:

QDate.fromString("1.30", "M.d") # January 30 1900
QDate.fromString("20000110", "yyyyMMdd") # January 10, 2000
QDate.fromString("20000110", "yyyyMd") # January 10, 2000

注意

如果一个格式字符重复的次数超过了上表中使用它的最长表达式,那么这部分格式将被读取为多个表达式,它们之间没有分隔符;最长的表达式可能会重复多次,直到剩余的表达式可能是一个较短的表达式。因此'MMMMMMMMMM'将匹配"MayMay05"并将月份设置为五月。同样,'MMMMMM'将匹配"May08"并发现它不一致,导致无效日期。

日期歧义

不同的文化使用不同的日期格式,因此用户可能会混淆日期字段的顺序。例如,"Wed 28-Nov-01"可能意味着2028年11月1日或2001年11月28日(每个日期恰好是星期三)。使用格式"ddd yy-MMM-dd"应解释为第一种方式,使用"ddd dd-MMM-yy"则解释为第二种方式。然而,用户的意思可能取决于用户通常书写日期的方式,而不是代码预期的格式。

上述例子混淆了月份中的日期和两位数的年份。当月份和日期都以数字形式给出时,类似的混淆也可能发生在交换月份和日期之间。在这些情况下,在日期格式中包含星期几字段可以提供一些冗余,这可能有助于捕捉此类错误。然而,如上例所示,这并不总是有效的:两个字段(或它们的含义)的交换可能会产生具有相同星期几的日期。

在格式中包含星期几也可以解决仅使用年份的最后两位数字指定的日期的世纪问题。不幸的是,当与用户(或其他数据源)混淆了两个字段的日期结合时,这种解析可能会导致找到一个与格式读取匹配但不是作者预期的日期。同样,如果用户在日期正确的情况下只是弄错了星期几,这可能会导致日期出现在不同的世纪。在每种情况下,找到不同世纪的日期可能会将一个错误输入的日期变成一个完全不同的日期。

避免日期歧义的最佳方法是使用四位数的年份和月份名称(无论是全称还是缩写),最好通过用户界面习惯用法收集,这些习惯用法使用户清楚地知道他们正在选择日期的哪一部分。包括星期几也可以通过提供检查数据一致性的手段来帮助。当数据来自用户时,使用用户选择的区域设置提供的格式,最好使用长格式,因为短格式更可能使用两位数年份。当然,并不总是能够控制格式——数据可能来自你无法控制的来源,例如。

由于这些可能的混淆来源,特别是在无法确定是否使用了明确的格式时,重要的是要检查将字符串读取为日期的结果不仅有效,而且对于提供它的目的是合理的。如果结果超出了某些合理值的范围,可能值得让用户确认他们的日期选择,以长格式显示从字符串中读取的日期,包括月份名称和四位数的年份,以便他们更容易识别任何错误。

getDate()
Return type:

(年, 月, 日)

提取日期的年、月和日,并将它们分配给 *``year``、*``month`` 和 *``day``。指针可以为空。

如果日期无效,则返回0。

注意

在Qt 5.7之前的版本中,此函数被标记为非const

static isLeapYear(year)
Parameters:

年份 – int

Return type:

布尔

如果指定的year是格里高利历中的闰年,则返回true;否则返回false

另请参阅

isLeapYear()

isNull()
Return type:

布尔

如果日期为空,则返回true;否则返回false。空日期是无效的。

注意

此函数的行为等同于 isValid()

另请参阅

isValid()

isValid()
Return type:

布尔

如果此日期有效,则返回 true;否则返回 false

另请参阅

isNull() isDateValid()

static isValid(y, m, d)
Parameters:
  • y – 整数

  • m – 整数

  • d – 整数

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

这是一个重载函数。

如果指定的日期(yearmonthday)在公历中有效,则返回 true;否则返回 false

示例:

QDate.isValid(2002, 5, 17) # true
QDate.isValid(2002, 2, 30) # false (Feb 30 does not exist)
QDate.isValid(2004, 2, 29) # true (2004 is a leap year)
QDate.isValid(2000, 2, 29) # true (2000 is a leap year)
QDate.isValid(2006, 2, 29) # false (2006 is not a leap year)
QDate.isValid(2100, 2, 29) # false (2100 is not a leap year)
QDate.isValid(1202, 6, 6) # true (even though 1202 is pre-Gregorian)
month()
Return type:

整数

这是一个重载函数。

month(cal)
Parameters:

calQCalendar

Return type:

整数

返回日期的月份数字。

将一年中的月份编号,第一个月为1。如果提供了cal作为日历,则使用该日历,否则使用格里高利历,其月份编号如下:

  • 1 = “一月”

  • 2 = “二月”

  • 3 = “三月”

  • 4 = “四月”

  • 5 = “五月”

  • 6 = “六月”

  • 7 = “七月”

  • 8 = “八月”

  • 9 = “九月”

  • 10 = “十月”

  • 11 = “十一月”

  • 12 = “十二月”

如果日期无效,则返回0。请注意,某些日历在某些年份可能有超过12个月。

__ne__(rhs)
Parameters:

rhsQDate

Return type:

布尔

如果 lhsrhs 表示不同的日期,则返回 true;否则返回 false

另请参阅

operator==()

__lt__(rhs)
Parameters:

rhsQDate

Return type:

布尔

如果 lhs 早于 rhs,则返回 true;否则返回 false

__le__(rhs)
Parameters:

rhsQDate

Return type:

布尔

如果 lhs 早于或等于 rhs,则返回 true;否则返回 false

__eq__(rhs)
Parameters:

rhsQDate

Return type:

布尔

如果 lhsrhs 表示同一天,则返回 true,否则返回 false

__gt__(rhs)
Parameters:

rhsQDate

Return type:

布尔

如果 lhs 晚于 rhs,则返回 true;否则返回 false

__ge__(rhs)
Parameters:

rhsQDate

Return type:

布尔

如果 lhs 晚于或等于 rhs,则返回 true;否则返回 false

setDate(year, month, day)
Parameters:
  • year – int

  • month – 整数

  • day – 整数

Return type:

布尔

将此设置为表示公历中的日期,使用给定的yearmonthday数字。如果生成的日期有效,则返回true,否则将其设置为表示无效日期并返回false。

另请参阅

isValid() dateFromParts()

setDate(year, month, day, cal)
Parameters:
  • year – int

  • month – 整数

  • day – 整数

  • calQCalendar

Return type:

布尔

将此设置为表示给定日历 cal 中的日期,使用给定的 yearmonthday 数字。如果生成的日期有效,则返回 true,否则将此设置为表示无效日期并返回 false。

另请参阅

isValid() dateFromParts()

startOfDay()
Return type:

QDateTime

这是一个重载函数。

startOfDay(zone)
Parameters:

区域QTimeZone

Return type:

QDateTime

返回一天的开始时刻。

一天的开始取决于时间的描述方式:对于位于更西时区的人来说,每一天的开始和结束都更早,而对于位于更东时区的人来说则更晚。可以使用可选的时间zone来指定要使用的时间表示方式。默认的时间表示方式是系统的本地时间。

通常,一天的开始是午夜,00:00:然而,如果时区转换导致给定日期跳过那个午夜(例如,夏令时向前跳过一天的第一个小时),则返回一天中实际的最早时间。这只有在时间表示是时区或本地时间时才会发生。

zone的timeSpec()为OffsetFromUTCUTC时,时间表示没有转换,因此一天的开始是QTime (0, 0)。

在极少数情况下,如果日期被完全跳过(这种情况发生在国际日期变更线以东的区域切换到其以西时),返回的结果将是无效的。传递一个无效的时区作为zone也会产生无效的结果,同样,如果日期超出了QDateTime可表示的范围,结果也将是无效的。

另请参阅

endOfDay()

startOfDay(spec[, offsetSeconds=0])
Parameters:
  • specTimeSpec

  • offsetSeconds – int

Return type:

QDateTime

注意

此函数已弃用。

这是一个重载函数。

请使用startOfDay(const QTimeZone &)代替。

返回一天的开始时刻。

一天的开始时间取决于时间的描述方式:对于与UTC偏移量较大的人来说,每一天的开始和结束时间会更早;而对于与UTC偏移量较小的人来说,每一天的开始和结束时间会更晚。可以使用specoffsetSeconds(除非spec是Qt::OffsetSeconds,否则忽略)或时区来指定要使用的时间表示方式。

通常,一天的开始是午夜,00:00:然而,如果本地时间转换导致给定日期跳过那个午夜(例如,夏令时向前跳过一天的第一个小时),则返回一天中实际的最早时间。

specOffsetFromUTC 时,offsetSeconds 给出隐含时区与UTC的偏移量。由于UTC和这些时区没有转换,一天的开始在这些情况下是 QTime (0, 0)。

在极少数情况下,如果日期被完全跳过(这种情况发生在国际日期变更线以东的区域切换到以西时),返回的结果将是无效的。将TimeZone作为spec传递(而不是传递QTimeZone)也会产生无效结果,同样,超出QDateTime可表示范围的日期也会产生无效结果。

toJulianDay()
Return type:

整数

将日期转换为儒略日。

另请参阅

fromJulianDay()

toPython()
Return type:

对象

toString(format)
Parameters:

format – str

Return type:

字符串

这是一个重载函数。

toString([format=Qt.TextDate])
Parameters:

formatDateFormat

Return type:

字符串

这是一个重载函数。

返回日期作为字符串。format参数决定字符串的格式。

如果formatTextDate,字符串将以默认方式格式化。日和月的名称将是英文的。这种格式化的一个例子是“Sat May 20 1995”。对于本地化格式化,请参见toString()

如果formatISODate,字符串格式对应于ISO 8601扩展规范中的日期和时间表示,形式为yyyy-MM-dd,其中yyyy是年份,MM是月份(01到12之间),dd是月份中的日期(01到31之间)。

如果formatRFC2822Date,则字符串将以RFC 2822兼容的方式格式化。这种格式化的一个例子是“1995年5月20日”。

如果日期无效,将返回一个空字符串。

警告

ISODate 格式仅对0到9999年范围内的年份有效。

另请参阅

fromString() toString()

toString(format)
Parameters:

format – str

Return type:

字符串

这是一个重载函数。

toString(format, cal)
Parameters:
Return type:

字符串

toString(format, cal)
Parameters:
Return type:

字符串

weekNumber()
Return type:

(周, 年份)

返回ISO 8601周数(1到53)。

如果日期无效,则返回0。否则,返回该日期的周数。如果yearNumber不是None(其默认值),则将年份存储为*``yearNumber``。

根据ISO 8601标准,每一周属于其大部分天数所在的年份,按照公历计算。由于ISO 8601的周从星期一开始,因此这是该周的星期四所在的年份。大多数年份有52周,但有些年份有53周。

注意

*``yearNumber`` 并不总是与 year() 相同。例如,2000年1月1日在1999年的第52周,而2002年12月31日在2003年的第1周。

另请参阅

isValid()

year()
Return type:

整数

这是一个重载函数。

year(cal)
Parameters:

calQCalendar

Return type:

整数

返回此日期的年份。

如果提供了cal作为日历,则使用它,否则使用公历。

如果日期无效,则返回0。对于某些日历,其第一年之前的日期可能都无效。

如果使用包含0年的日历,请使用isValid()检查返回值是否为0。此类日历以明显的方式使用负年份,年份1之前是年份0,接着是年份-1,依此类推。

一些日历,尽管没有公元0年,但在其第一年之前有一个传统的年份编号,从1开始倒数。例如,在前推格里高利历中,公元1年(第一年)之前的连续年份被标识为公元前1年、公元前2年、公元前3年,依此类推。对于这样的日历,使用负年份数字来表示公元1年之前的这些年份,-1表示公元1年之前的那一年。