Ottenere i Giorni di un Mese con PHP

Durante lo sviluppo di specifici report contabili mi capitò di aver necessità di calcolare e ottenere tutti i giorni di uno specifico mese con del codice PHP. Questo script mi serviva per mostrare gli importi corrispondenti ad ogni giorno del mese corrente o ad un altro mese dell’anno; provai vari script presi online ma che non mi soddisfaranno appieno.

Dunque, decisi di svilupparne uno io più efficiente e di semplice utilizzo, che mostrerò in questo articolo in modo che chiunque possa usufruirne.

Calcolare e stampare tutti i giorni di un mese con PHP

Lo scopo dello script PHP che ho sviluppato è quello di mostrare/stampare (su schermo, con echo) tutti i giorni di uno specifico mese dell’anno, dal primo all’ultimo.

Il problema principale si presentò con il rilevamento dell’ultimo giorno di un mese, risolto con questa guida[…], dopo di ciò, inserire ogni giorno in una tabella o lista HTML e associare di conseguenza un valore.

Le variabili

Come primo passo, definiamo le variabili PHP:

//Definisco le variabili data
$anno = "2023";
$mese= "01";

//Definisco il primo e l'ultimo giorno del mese
$primoGiorno = date("Y-m-d", strtotime($anno."-".$mese."-01") );  // 1
$ultimoGiorno= date("d", strtotime(date("Y-m-t", strtotime($primoGiorno)))); // 31

Le variabili sopra definiscono la data da analizzare (anno e mese), e di conseguenza il primo e ultimo giorno di quel mese.

Nota: Nella variabile $ultimoGiorno facciamo uso del parametro t, che equivale al conteggio dei giorni del mese selezionato.

Nel caso avessimo bisogno di rilevare i giorni del mese corrente, le variabili sono da usare sono:

$anno = date("Y");  // anno corrente es. 2022
$mese = date("m");  // mese corrente es. 03

Stampa dei giorni

Ora, per stampare / mostrare tutti i giorni del mese selezionato, dal primo all’ultimo, ci basterà eseguire un ciclo (o loop) di tipo for in questo modo.

for($i = 1; $i <= $ultimoGiorno; $i+=1){
    $dataCorrente = date("Y-m-d", strtotime($anno."-".$mese."-".$i));
    echo $dataCorrente;
    echo "<br>";
}

Per ogni iterazione del ciclo for, generiamo la variabile PHP locale $dataCorrente, cioè la data che in quel momento il ciclo sta elaborando, e la mostriamo su schermo con echo.
Il risultato mostrerà tutti i giorni di quel mese dal primo all’ultimo.

Puoi gestire facilmente i giorni da mostrare cambiando il range del ciclo, aumentando il valore di partenza della variabile $i ad esempio.

Utile anche il confronto con la data attuale:

for($i = 1; $i <= $ultimoGiorno; $i+=1){
  $dataCorrente = date("Y-m-d", strtotime($anno."-".$mese."-".$i));
  if ($dataCorrente == date("Y-m-d")){
    echo "Oggi";
  }else{
    echo $dataCorrente;
  }
  echo "<br>";
}

Perché il ciclo for? Ho testato personalmente altri metodi, alcuni con while loop con cui ho ottenuto risultati simili. Tuttavia trovo la gestione di un ciclo for molto più semplice e di facile comprensione anche per principianti, considerando che un ciclo for funziona semplicemente con un range numerico (da 1 a 31).

Codice completo

Qui in basso il codice completo:

//Definisco le variabili data
$anno = "2023";
$mese= "01";

//Definisco il primo e l'ultimo giorno del mese
$primoGiorno = date("Y-m-d", strtotime($anno."-".$mese."-01") );  // 1
$ultimoGiorno= date("d", strtotime(date("Y-m-t", strtotime($primoGiorno)))); // 31

for($i = 1; $i <= $ultimoGiorno; $i+=1){
    $dataCorrente = date("Y-m-d", strtotime($anno."-".$mese."-".$i));
    echo $dataCorrente;   // in alternativa usa $i per mostrare solo il giorno
    echo "<br>";
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

CAPTCHA