PHP中cal_days_in_month函数和calendar扩展详解
问题:
在开发中无意间发现cal_days_in_month函数不可使用。然后就开始研究学习。
1、cal_days_in_month函数功能用法
- 功能
cal_days_in_month — 返回某个历法中某年中某月的天数 - 用法
cal_days_in_month ( int $calendar , int $month , int $year ) : int
- 参数
calendar
:用来计算的某个历法month
:选定历法中的某月year
:选定历法中的某年
- 返回值
指定历法中选定的某月的天数。
2、cal_days_in_month为何不能用?
-
Calendar
扩展-
Calendar
扩展 PHP 官网简介:历法扩展集包括了一系列用于在不同历法间进行转换的函数,它是以Julian Day计数为中介或标准来进行的。Julian Day计数是以公元前的4713年的1月1日为起点的一种计数法。为了在不同历法间进行转换,你首先要转换成Julian Day计数,然后再转换为你所需要的历法。Julian Day计数和Julian历法是非常不同的!
-
历法和计数
Julian Day Count(儒略日计数)与 Julian Calendar(儒略历法) 不是一回事!Julian Day计数的更多信息可以参考» http://www.hermetic.ch/cal_stud/jdn.htm
历法系统的更多信息可以参考» http://www.fourmilab.ch/documents/calendar
-
-
cal_days_in_month
和Calendar
的关系要使用本类函数,需要在 编译 PHP 时加上
--enable-calendar
。
PHP 的Windows
版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。
3、Calendar
相关的日历 函数。
注解:点击以下函数,分别跳转到对应的PHP函数手册
- cal_days_in_month — 返回某个历法中某年中某月的天数
- cal_from_jd — 转换Julian Day计数到一个支持的历法。
- cal_info — 返回选定历法的信息
- cal_to_jd — 从一个支持的历法转变为Julian Day计数。
- easter_date — 得到指定年份的复活节午夜时的Unix时间戳。
- easter_days — 得到指定年份的3月21日到复活节之间的天数
- FrenchToJD — 从一个French Republican历法的日期得到Julian Day计数。
- GregorianToJD — 转变一个Gregorian历法日期到Julian Day计数
- JDDayOfWeek — 返回星期的日期
- JDMonthName — 返回月份的名称
- JDToFrench — 转变一个Julian Day计数到French Republican历法的日期
- JDToGregorian — 转变一个Julian Day计数为Gregorian历法日期
- jdtojewish — 转换一个julian天数为Jewish历法的日期
- JDToJulian — 转变一个Julian Day计数到Julian历法的日期
- jdtounix — 转变Julian Day计数为一个Unix时间戳
- JewishToJD — 转变一个Jewish历法的日期为一个Julian Day计数
- JulianToJD — 转变一个Julian历法的日期为Julian Day计数
- unixtojd — 转变Unix时间戳为Julian Day计数
4、Calendar` 预定义常量
此扩展编译入 PHP 或在运行时动态载入时可用
-
日历历法标记
常量名 值 说明 CAL_GREGORIAN 0 格里高利历/公历/阳历 CAL_JULIAN 1 儒略历 CAL_JEWISH 2 犹太历 CAL_FRENCH 3 法国共和历,Gregorian历法的1792年9月22日到1806年9月22日 -
星期格式标记
常量名 值 说明 CAL_DOW_DAYNO 0 数字格式的星期,0=Sunday,1=Monday… CAL_DOW_LONG 1 英文简写的星期,Sun=Sunday,Mon=Monday… CAL_DOW_SHORT 2 英文全称的星期 -
月份格式标记
常量名 值 说明 CAL_MONTH_GREGORIAN_SHORT 0 格里高利历简写 CAL_MONTH_GREGORIAN_LONG 1 格里高利历全称 CAL_MONTH_JULIAN_SHORT 2 儒略历简写 CAL_MONTH_JULIAN_LONG 3 儒略历全称 CAL_MONTH_JEWISH 4 犹太历 CAL_MONTH_FRENCH 5 法国共和历 -
复活节计算历法标记
常量名 值 说明 CAL_EASTER_DEFAULT 0 PHP4.3起,1753年之前使用儒略历,1753年开始使用格里高利历 CAL_EASTER_ROMAN 1 PHP4.3起,1583年之前使用儒略历,1583年开始使用格里高利历 CAL_EASTER_ALWAYS_GREGORIAN 2 PHP4.3起,始终使用格里高利历 CAL_EASTER_ALWAYS_JULIAN 3 PHP4.3起,始终使用儒略历 -
犹太历格式标记
常量名 值 说明 CAL_JEWISH_ADD_ALAFIM_GERESH 2 PHP5.0起,jdtojewish函数转换时希伯来语的格式。 CAL_JEWISH_ADD_ALAFIM 4 PHP5.0起,jdtojewish函数转换时希伯来语的格式。 CAL_JEWISH_ADD_GERESHAYIM 8 PHP5.0起,jdtojewish函数转换时希伯来语的格式。
5、替代cal_days_in_month函数
当系统函数不支持的时候,可以尝试用php自带的函数实现不支持的函数功能。
$dayCount = date("t",strtotime("2018-01"));