Как получить дату рабочих дней в массиве php? - PullRequest
0 голосов
/ 26 мая 2020

Может ли кто-нибудь мне помочь, куда я должен поместить свой массив $ days [], чтобы праздники не включались в этот массив.

Мой код выглядит следующим образом

$data['ferie'] = $this->CalendrierModel->find('ferie');
$timestamp = strtotime ('2020-05-18');
$days      = array();
$i         = 0;
$jourOuvre = 5;

foreach($data['ferie'] as $row){
  $ferie = array($row->start);

  while($i < $jourOuvre){
    $date_tmp = date("Y-m-d", strtotime($i . 'weekdays', $timestamp));
    if (in_array($date_tmp , $ferie)){
      $jourOuvre++;
      $date_tmp = date("Y-m-d", strtotime('+1days', $date_tmp));
    }
    $days[] = $date_tmp;
    $i++;
  }
}
var_dump($days);

этот код делает:

699:
array (size=5)
  0 => string '2020-05-18' (length=10)
  1 => string '2020-05-19' (length=10)
  2 => string '2020-05-20' (length=10)
  3 => string '2020-05-21' (length=10)
  4 => string '2020-05-22' (length=10)

а 2020-05-21 - выходной .

NB: $ data ['fer ie' ] - это массив праздников.

1 Ответ

1 голос
/ 25 июня 2020

Спасибо, ребята. Я сделал это.

$data['ferie'] = $this->CalendrierModel->find('ferie');

$timestamp = strtotime ('2020-05-18');
$days  = array();
$ferie = array();
$i     = 0;
$jourOuvre = 5;

foreach($data['ferie'] as $row){
  $ferie[] = $row->start;
}

while($i < $jourOuvre){
  $date_tmp = date("Y-m-d", strtotime($i . ' weekdays' , $timestamp));

  if(in_array($date_tmp , $ferie)) {
    $jourOuvre++;
  } else {
    $days[] = $date_tmp;
  }
  $i++;
}
var_dump($days);

Праздники вне моего массива:

C:\wamp\www\HELPJUR\application\controllers\Ticket.php:816:
array (size=5)
  0 => string '2020-05-18' (length=10)
  1 => string '2020-05-19' (length=10)
  2 => string '2020-05-20' (length=10)
  3 => string '2020-05-22' (length=10)
  4 => string '2020-05-25' (length=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...