PHP中cal_days_in_month函数和calendar扩展详解

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
    
  • 参数
    1. calendar :用来计算的某个历法
    2. month :选定历法中的某月
    3. year :选定历法中的某年
  • 返回值
    指定历法中选定的某月的天数。

2、cal_days_in_month为何不能用?

  • Calendar 扩展

    1. Calendar 扩展 PHP 官网简介:

      历法扩展集包括了一系列用于在不同历法间进行转换的函数,它是以Julian Day计数为中介或标准来进行的。Julian Day计数是以公元前的4713年的1月1日为起点的一种计数法。为了在不同历法间进行转换,你首先要转换成Julian Day计数,然后再转换为你所需要的历法。Julian Day计数和Julian历法是非常不同的!

    2. 历法和计数
      Julian Day Count(儒略日计数)与 Julian Calendar(儒略历法) 不是一回事!

      Julian Day计数的更多信息可以参考» http://www.hermetic.ch/cal_stud/jdn.htm
      历法系统的更多信息可以参考» http://www.fourmilab.ch/documents/calendar

  • cal_days_in_monthCalendar 的关系

    要使用本类函数,需要在 编译 PHP 时加上 --enable-calendar
    PHPWindows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

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_GREGORIAN0格里高利历/公历/阳历
    CAL_JULIAN1儒略历
    CAL_JEWISH2犹太历
    CAL_FRENCH3法国共和历,Gregorian历法的1792年9月22日到1806年9月22日
  • 星期格式标记

    常量名说明
    CAL_DOW_DAYNO0数字格式的星期,0=Sunday,1=Monday…
    CAL_DOW_LONG1英文简写的星期,Sun=Sunday,Mon=Monday…
    CAL_DOW_SHORT2英文全称的星期
  • 月份格式标记

    常量名说明
    CAL_MONTH_GREGORIAN_SHORT0格里高利历简写
    CAL_MONTH_GREGORIAN_LONG1格里高利历全称
    CAL_MONTH_JULIAN_SHORT2儒略历简写
    CAL_MONTH_JULIAN_LONG3儒略历全称
    CAL_MONTH_JEWISH4犹太历
    CAL_MONTH_FRENCH5法国共和历
  • 复活节计算历法标记

    常量名说明
    CAL_EASTER_DEFAULT0PHP4.3起,1753年之前使用儒略历,1753年开始使用格里高利历
    CAL_EASTER_ROMAN1PHP4.3起,1583年之前使用儒略历,1583年开始使用格里高利历
    CAL_EASTER_ALWAYS_GREGORIAN2PHP4.3起,始终使用格里高利历
    CAL_EASTER_ALWAYS_JULIAN3PHP4.3起,始终使用儒略历
  • 犹太历格式标记

    常量名说明
    CAL_JEWISH_ADD_ALAFIM_GERESH2PHP5.0起,jdtojewish函数转换时希伯来语的格式。
    CAL_JEWISH_ADD_ALAFIM4PHP5.0起,jdtojewish函数转换时希伯来语的格式。
    CAL_JEWISH_ADD_GERESHAYIM8PHP5.0起,jdtojewish函数转换时希伯来语的格式。

5、替代cal_days_in_month函数

当系统函数不支持的时候,可以尝试用php自带的函数实现不支持的函数功能。

$dayCount = date("t",strtotime("2018-01"));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值