[PHP] Anno bisestile o no?

Come controllare se un anno è bisestile o no? Domanda posta qualche minuto fa su un gruppo di discussione sul PHP che seguo abbastanza assiduamente. Le risposte non si sono fatte attendere (bella community da questo punto di vista), ma le soluzioni proposte andavano dalle 20 righe di codice in su, con controlli ciclici, serializzazioni degli anni bisestili in improbabili array degli anni bisestili dell’ultimo secolo. Ho trovato girovagando altre soluzioni più pulite, ma sempre eccessivamente dispendiose per l’uso di memoria di sistema.

All’utente interessa sapere solo se quel determinato anno è bisestite o no. Un anno bisestile ha in calendario sempre il 29 Febbraio. Quindi, se quel giorno è calendarizzato l’anno sarà sicuramente bisestile, altrimenti è un anno normale.

Basta un semplice controllo con checkdate().

  function isLeapYear($year){
    if(checkdate(2,29,$year)){
      return $year.’ is a leap year’;
    }else{
      return $year.’ is not a leap year’;
    }
  }

Un semplicissimo ciclo if che controlla l’esistenza di una data specificata. Possiamo estremizzare ulteriormente il codice in tre righe e darne un output booleano.

  function isLeapYear($year){
    return (checkdate(2,29,$year)) ? true : false;
  }

Semplice no?! 🙂

4 thoughts on “[PHP] Anno bisestile o no?”

  1. @ ilSilente: minimalista 🙂

    @ Urban: mktime lo trovo molto utile nel calcolo delle differenze fra data, visto che riesce a gestire dinamicamente anche il cambio dell'ora legale/solare e viceversa.

  2. Si, anche in quel caso è molto utile. Io in genere lo uso ogni volta che devo creare delle date con alcuni elementi fissi (tipo "inizio mese", "inizio anno", …)

Comments are closed.