PersianCalendar

本文提供了对此 API 的参考文档的补充说明。

大多数使用波斯语的国家/地区都使用波斯历,尽管有些地区使用不同的月份名称。 波斯历是伊朗和阿富汗的官方日历,也是哈萨克斯坦和塔吉克斯坦等地区的替代日历之一。

注意

有关在 .NET 中使用 PersianCalendar 类和其他日历类的信息,请参阅使用日历

波斯历是一种回回阳历,从对应于公元 622 年的迁徙年开始,即穆罕默德(愿主福安之)从麦加迁移到麦地那的那一年。

波斯历以太阳年为基础,有大约 365 天。 一年以四季为周期。从地球中心看,当太阳从南半球穿过赤道到达北半球时,新的一年就开始了。 新年标志着法瓦尔丁月的第一天,这是北半球春天的第一天。 例如,公元 2002 年 3 月 21 日对应于波斯历 1381 年法瓦尔丁月的第一天。

波斯历的前六个月每月都有 31 天,接下来的五个月每月都有 30 天,最后一个月平年有 29 天,闰年有 30 天。 闰年是指除以 33 时余数为 1、5、9、13、17、22、26 或 30 的年份。 例如,1370 年是一个闰年,因为将其除以 33 时,余数为 17。 每 33 年的周期大约有 8 个闰年。

PersianCalendar 类和 .NET Framework 版本

从 .NET Framework 4.6 开始,PersianCalendar 类使用回回阳历天文算法(而不是观测算法)来计算日期。 这使得 PersianCalendar 实施与在伊朗和阿富汗使用的波斯历一致,这是波斯历使用最为普遍的两个国家。 如果安装了 .NET Framework 4.6,更改会影响在 .NET Framework 4 或更高版本上运行的所有应用。

由于更改了算法:

  • 在转换公历中介于 1800 到 2123 之间的日期时,这两种算法应返回相同的结果。

  • 在公历中转换 1800 之前的日期和 2123 之后的日期时,这两种算法可能会返回不同的结果。

  • MinSupportedDateTime 属性值已从公历 0622 年 3 月 21 日更改为公历 0622 年 3 月 22 日。

  • MaxSupportedDateTime 属性值已从波斯历 9378 年第 10 个月的第 10 天更改为波斯历 9378 年第 10 个月的第 13 天。

  • IsLeapYear 方法可能返回与以前不同的结果。

使用 PersianCalendar 类

应用程序将使用 PersianCalendar 对象计算波斯历中的日期,或在波斯日期与公历日期之间进行转换。

你无法将 PersianCalendar 对象用作区域性的默认日历。 默认日历由 CultureInfo.Calendar 属性指定,并且必须是 CultureInfo.OptionalCalendars 属性返回的日历之一。 目前,PersianCalendar 类不是 CultureInfo 类支持的任何区域性的可选日历,因此无法用作默认日历。