Se le dan dos strings (dd-mm-yyyy) que representan dos fechas, debe encontrar el número de todos los días de la semana presentes entre las fechas dadas (ambas inclusive)
Ejemplos:
Input : startDate = "01-01-2018" endDate = "01-03-2018" Output : Array ( [Monday] => 9 [Tuesday] => 9 [Wednesday] => 9 [Thursday] => 9 [Friday] => 8 [Saturday] => 8 [Sunday] => 8 ) Input : startDate = "01-01-2018" endDate = "01-01-2018" Output : Array ( [Monday] => 1 [Tuesday] => 0 [Wednesday] => 0 [Thursday] => 0 [Friday] => 0 [Saturday] => 0 [Sunday] => 0 )
La idea básica para averiguar el número de todos los días de la semana es muy simple, debe iterar desde la fecha de inicio hasta la fecha de finalización y aumentar el conteo de cada día. Por lo tanto, puede calcular el resultado deseado.
En php podemos encontrar el día para una fecha en particular usando la función date() como date(‘l’, $timestamp) donde $timestamp es el valor de strtotime($date) . También puede aumentar el valor de la fecha en 1 con la ayuda de $date->modify(‘+1 day’) .
Algoritmo:
- convertir la string startDate y endDate en el objeto Datetime().
- Iterar desde startDate hasta endDate en un bucle:
- Averigüe la marca de tiempo de startDate.
- Averigüe el día de la semana para la marca de tiempo actual de startDate.
- Aumente el valor de un día de la semana en particular en 1.
- Aumente el valor de startDate en 1.
- Imprima la array que contiene el valor de todos los días de la semana.
<?php // input start and end date $startDate = "01-01-2018"; $endDate = "01-01-2019"; $resultDays = array('Monday' => 0, 'Tuesday' => 0, 'Wednesday' => 0, 'Thursday' => 0, 'Friday' => 0, 'Saturday' => 0, 'Sunday' => 0); // change string to date time object $startDate = new DateTime($startDate); $endDate = new DateTime($endDate); // iterate over start to end date while($startDate <= $endDate ){ // find the timestamp value of start date $timestamp = strtotime($startDate->format('d-m-Y')); // find out the day for timestamp and increase particular day $weekDay = date('l', $timestamp); $resultDays[$weekDay] = $resultDays[$weekDay] + 1; // increase startDate by 1 $startDate->modify('+1 day'); } // print the result print_r($resultDays); ?>
Producción :
Array ( [Monday] => 53 [Tuesday] => 53 [Wednesday] => 52 [Thursday] => 52 [Friday] => 52 [Saturday] => 52 [Sunday] => 52 )
Publicación traducida automáticamente
Artículo escrito por Shivam.Pradhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA