首页 > 解决方案 > 获取除星期日之外的两个日期之间的日期

问题描述

我有 2 个日期,除了星期天,我需要获取这两个日期之间的日期。

这是我到目前为止创建的代码。

<?php
$service_start_date = '2021-04-15';
$service_end_date = '2021-05-14';

$service_start_date = new DateTime($service_start_date);
                    $service_end_date = new DateTime($service_end_date);
                    $daterange = new DatePeriod($service_start_date, new DateInterval('P1D'), $service_end_date);
                    echo $daterange;
                    foreach($daterange as $date){
                        if(date("w", strtotime( $date)) != 0){
                        echo $date;
                        }
                        echo $date;
                    }

?>

这是我得到的错误:

PHP 可恢复的致命错误:无法将类 DatePeriod 的对象转换为字符串

我究竟做错了什么?

标签: php

解决方案


您使用 DateTime 和 format 或使用 date 和 strtotime。混合不好。DatePeriod 不是必需的。日期时间的解决方案:

$service_start_date = '2021-04-15';
$service_end_date = '2021-05-14';

$endDate = date_create($service_end_date);
$startDate = date_create($service_start_date);
while($startDate < $endDate){
  if($startDate->format('w') != 0){
    echo $startDate->format('Y-m-d').'<br>';
  }
  $startDate->modify('+1 day');
}

推荐阅读