Last active
February 28, 2018 12:48
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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