我正在尝试计算日期范围内的闰天数。
这是我到目前为止(采用here的代码)
<?php
$date_from = strtotime('2019-06-01');
$date_to = strtotime('2021-05-30');
$leapday_count = 0;
for($year=$date_from; $year<=$date_to; $year=strtotime('next year', $year)) {
if (date('L', $year)) {
$leapday_count++;
}
}
echo $leapday_count;
?>
以下是我需要帮助的地方:
以上代码仅查看开始日期和结束日期的年份。例如,如果开始日期是2月29日之后,它会不。我怎样才能确保它真正考虑整个日期,而不仅仅是日期的年份?
提前致谢!
答案 0 :(得分:2)
停止进行日期数学运算。这很难。
使用datetime和diff
http://php.net/manual/en/datetime.diff.php
那里的例子
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
准确回答这个问题。
$start = new DateTime('2020-03-01');
$end = new DateTime('2024-02-28');
$interval = ("last day of feb next year");
$current = clone $start;
$leapYears = 0;
while ($current->modify("last day of feb") && $current <= $end) {
if ($current->format('d') == 29 && $current > $start) {
$leapYears++;
}
$current->modify("+1 year");
}