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