Рассчитать будни между двумя датами - PullRequest
0 голосов
/ 30 апреля 2020

Я хочу посчитать, сколько дней в буднем дне. Но он возвращает «Uncaught Error: вызов функции-члена add () по целому числу».

Вот мой код

$dateStart_convert   = DateTime::createFromFormat("d/m/Y", $cuti_sdate);
$start = $dateStart_convert->getTimestamp();

$dateEnd_convert   = DateTime::createFromFormat("d/m/Y", $cuti_edate);
$end = $dateEnd_convert->getTimestamp();

$oneday = new DateInterval("P1D");

$workdays = array();

foreach(new DatePeriod($start, $oneday, $end->add($oneday)) as $day)
{
     $day_num = $day->format("N"); /* 'N' number days 1 (mon) to 7 (sun) */
     if($day_num < 6)
     { 
         $workdays[] = $day->format("Y-m-d");
     }
     $weekday_date = array_merge(array_diff($workdays, $cuti_date));

     $c_weekday = count($weekday_date);
}

1 Ответ

0 голосов
/ 30 апреля 2020

используйте это :)

<?php 
$start = new DateTime($startDate);
$end = new DateTime($endDate);
$oneday = new DateInterval("P1D");
$days = array();
$data = "7.5";

/ * Итерация от $ start до $ end + 1 день, один день в каждой итерации. Мы добавляем один день к дате окончания $, потому что DatePeriod повторяется только до, не включая дату окончания. * /

foreach(new DatePeriod($start, $oneday, $end->add($oneday)) as $day) {
  $day_num = $day->format("N"); /* 'N' number days 1 (mon) to 7 (sun) */
  if($day_num < 6) { /* weekday */
    $days[$day->format("Y-m-d")] = $data;
  } 
}    

$weekdays = count($days);

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...