Skip to content

php_ref_calendar

PHP Calendar 扩展提供了一套函数,用于使用儒略日计数(Julian Day Count)作为中间媒介在不同日历系统(公历、儒略历、犹太历、法国共和历)之间进行转换。

儒略日计数是自公元前 4713 年 1 月 1 日(儒略历)正午世界时以来连续的天数计数。

注意: 尽管可用,这些函数相对底层。对于 PHP 中大多数现代日期和时间操作,内置的 DateTime 类、DateInterval、DateTimeZone 以及 IntlDateFormatter 类(来自 Intl 扩展)提供了更强大、灵活和面向对象的方法。

转换过程:要使用此扩展从日历 A 转换为日历 B,您通常需要将日历 A 中的日期转换为其儒略日计数,然后再将该儒略日计数转换为日历 B 中的日期。

澄清:儒略日计数与儒略历系统本身是不同的。

要使用这些函数,PHP 需要编译时支持日历功能。您可以在编译时使用 --enable-calendar 标志启用它。

在许多系统上(包括预编译的 Windows 发行版和常见的 Linux 包管理器安装),calendar 扩展通常默认包含并启用。您可以通过检查您的 phpinfo() 输出验证它是否已启用。

函数说明
cal_days_in_month()返回给定年份和日历系统中某个月的天数。
cal_from_jd()将儒略日计数转换为指定日历系统的日期表示形式。
cal_info()返回有关指定日历系统的信息(例如,月份、日期)。
cal_to_jd()将给定日历系统的日期转换为其儒略日计数。
easter_date()返回给定年份复活节星期日午夜的 Unix 时间戳(默认使用 1752 年后的公历规则)。
easter_days()返回给定年份复活节星期日落在 3 月 21 日之后的日数。
frenchtojd()将法国共和历的日期转换为其儒略日计数。
gregoriantojd()将公历的日期转换为其儒略日计数。
jddayofweek()返回给定儒略日计数的星期几(例如,‘Monday’,1)。
jdmonthname()返回给定儒略日计数和日历系统的月份名称(例如,‘January’,‘Jan’)。
jdtofrench()将儒略日计数转换为法国共和历的日期。
jdtogregorian()将儒略日计数转换为公历日期(YYYY-MM-DD 格式)。
jdtojewish()将儒略日计数转换为犹太历日期。
jdtojulian()将儒略日计数转换为儒略历日期。
jdtounix()将儒略日计数转换为 Unix 时间戳(自 Unix 纪元以来的秒数)。
jewishtojd()将犹太历日期转换为其儒略日计数。
juliantojd()将儒略历日期转换为其儒略日计数。
unixtojd()将 Unix 时间戳转换为其对应的儒略日计数。

这些常量用作日历函数的参数,通常指定日历系统或格式选项。

Constant Type Description
----------------------------- ------- ----------------------------------------------------
CAL_GREGORIAN Integer 公历
CAL_JULIAN Integer 儒略历
CAL_JEWISH Integer 犹太历
CAL_FRENCH Integer 法国共和历
CAL_NUM_CALS Integer 可用日历总数
CAL_DOW_DAYNO Integer 星期几对应的数字(0=星期日,1=星期一,...)
CAL_DOW_SHORT Integer 缩写日名称(例如,“周一”)
CAL_DOW_LONG Integer 完整日名称(例如,“星期一”)
CAL_MONTH_GREGORIAN_SHORT Integer 公历月份缩写名称(例如,“一月”)
CAL_MONTH_GREGORIAN_LONG Integer 公历月份完整名称(例如,“一月”)
CAL_MONTH_JULIAN_SHORT Integer 儒略历月份缩写名称
CAL_MONTH_JULIAN_LONG Integer 儒略历月份完整名称
CAL_MONTH_JEWISH Integer 犹太历月份名称
CAL_MONTH_FRENCH Integer 法国共和历月份名称
CAL_EASTER_DEFAULT Integer 根据 1752 年后公历规则计算复活节
CAL_EASTER_ROMAN Integer 根据 1582 年后公历规则计算复活节
CAL_EASTER_ALWAYS_GREGORIAN Integer 使用推定公历规则计算复活节
CAL_EASTER_ALWAYS_JULIAN Integer 使用儒略历规则计算复活节
CAL_JEWISH_ADD_ALAFIM_GERESH Integer 在千位数字前添加 geresh 符号(如 ')(犹太历年)
CAL_JEWISH_ADD_ALAFIM Integer 为千位数字添加单词 'alafim'(犹太历年)
CAL_JEWISH_ADD_GERESHAYIM Integer 在年份最后一个字母前添加 gershayim 符号(如 ")(犹太历年)