Visualizzare tutti giorni di un mese in PHP

Mattepuffo's logo
Visualizzare tutti giorni di un mese in PHP

Visualizzare tutti giorni di un mese in PHP

Quello che vogliamo ottenere oggi è una piccola funzione che visualizza tutti i giorni di un determinato mese / anno in PHP.

Nello specifico vogliamo visualizzare tutti i lunedi (o martedi, ecc).

Poi andremo oltre, e visualizzeremo tutti i lunedi di questo anno e del prossimo, partendo dal prossimo lunedi rispetto ad oggi.

Questa seconda "regola" la otterremo usando un paio di cicli, ma sempre la stessa funzione.

Così sarà riutilizzabile per i vostri scopi.

Questa la funzione:

function getDaysInMonth($year, $month, $day = 'Monday') {
    $strDate = 'first ' . $day . ' of ' . $year . '-' . $month;

    $startDay = new \DateTime($strDate);

    $days = array();

    while ($startDay->format('Y-m') <= $year . '-' . str_pad($month, 2, 0, STR_PAD_LEFT)) {
        $days[] = clone($startDay);
        $startDay->modify('+ 7 days');
    }

    return $days;
}

E questo l'esempio del suo utilizzo:

$arrYears = array(2020, 2021);
$dataInizio = date('Y-m-d');

foreach ($arrYears as $y) {
    for ($m = 1; $m <= 12; ++$m) {
        $days = getDaysInMonth($y, $m);
        foreach ($days as $day) {
            if ($day->format('Y-m-d') >= $dataInizio) {
                echo $day->format('D Y-m-d') . '<br>';
            }
        }
    }
}

Come vedete abbiamo usato l'oggetto DateTime.

Per il resto, vi basterà modificare il modo di chiamare la funzione / il passaggio dei parametri.

Enjoy!


Share this Post

Commentami!