记住,如果您只需要当前月份的天数,请使用date函数
$days = date("t");
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
cal_days_in_month — 返回指定年份和日历的月份的天数
calendar
用于计算的日历
month
所选日历中的月份
year
所选日历中的年份
给定日历中所选月份的天数
示例 #1 cal_days_in_month() 示例
<?php
$number = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "2003年8月有 {$number} 天";
?>
这是一个我刚刚编写的一行函数,用于查找一个月的天数,它不依赖于任何其他函数。
我编写这个函数的原因是我刚刚发现我忘记用日历支持编译PHP,而我为网站开源部分编写的类坏了。所以与其重新编译PHP(我猜我明天会做),我编写了这个函数,它应该同样有效,并且总是有效,不需要PHP的日历扩展或任何其他PHP函数。
我使用旧的指关节和指关节间方法学习月份的天数,所以这应该可以解释mod 7部分。:)
<?php
/*
* days_in_month($month, $year)
* 返回给定月份和年份的天数,考虑闰年。
*
* $month: 月份数字 (整数1-12)
* $year: 年份数字 (任何整数)
*
* 前置条件: $month 是1到12之间的整数,$year 是整数。
* 后置条件: 无
*/
// ben at sparkyb dot net更正
function days_in_month($month, $year)
{
// 计算一个月的天数
return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31);
}
?>
享受!
David Bindel
function lastDayOfMonth(string $time, int $deltaMonth, string $format = 'Y-m-d')
{
try {
$year = date('Y', strtotime($time));
$month = date('m', strtotime($time));
$increaYear = floor(($deltaMonth + $month - 1) / 12);
$year += $increaYear;
$month = (($deltaMonth + $month) % 12) ?: 12;
$day = cal_days_in_month(CAL_GREGORIAN, $month, $year);
return $time . ' + ' . $deltaMonth . ' => ' . date($format, strtotime($year . '-' . $month . '-' . $day)) . "\n";
} catch (Exception $e) {
throw $e;
}
}