Skip to content

Instantly share code, notes, and snippets.

@Jeconias
Last active February 28, 2018 12:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jeconias/d56d5b71a5ac4a5b228630d7d4a97959 to your computer and use it in GitHub Desktop.
Save Jeconias/d56d5b71a5ac4a5b228630d7d4a97959 to your computer and use it in GitHub Desktop.
Verificar a quantidade de dias de segunda a sexta que estão no intervalo de duas datas
<?php
private function DiasValidos($dataInicial = '2018-02-25', $dataFinal = '2018-03-10'){
/*
* # ESSE MÉTODO RETORNA A QUANTIDADE DE DIAS DE SEGUNDA A SEXTA
* QUE ENTÃO NO INTERVALO DE DUAS DATAS E O TOTAL DE DIAS ENTRE ELAS.
*
*/
$start = new \DateTime($dataInicial);
$end = new \DateTime($dataFinal);
//INTERVALO ENTRE A PRIMEIRA E A ÚLTIMA DATA
$intervalo = $start->diff($end);
$a = 0;
$diasValidos = 0;
while ($a <= $intervalo->days) {
//PEGANDO A DATA INICIAL
$data = new \DateTime($dataInicial);
//ADICIONANDO UMA QUANTIDADE DE DIAS DE ACORDO COM O VALOR $a
$data->add(new \DateInterval('P'.$a.'D'));
//UMA NOVA DATA É GERADA COM A QUANTIDADE DE DIAS ADICIONADOS
$newData = $data->format('Y-m-d');
//PEGANDO O NUMERO QUE REPRESENTA O DIA DA SEMANA
$diadasemana = date('w', strtotime($newData));
//VERIFICANDO SE A DATA ESTÁ ENTRE SEGUNDA E SEXTA. 0 (domingo) / 6 (sábado)
if ($diadasemana != 0 && $diadasemana != 6) {
$diasValidos++;
}
$a++;
}
return array('diastotal' => $intervalo->days, 'diasvalidos' => $diasValidos);
//DE ACORDO COM AS DATAS A CIMA, O RETORNO SERÁ: diastotal => 13, diasvalidos => 10
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment