Calcoli sugli anni

Gli argomenti di questa pagina

  • Giorni dall'inizio dell'anno
  • Anno bisestile
  • Giorni dell'anno in esame
  • Giorni rimanenti alla fine dell'anno

Qui di seguito alcuni studi sui giorni relativi all'anno o a una data.
Per questi studi vengono presi in considerazione alcuni parametri che ci mette a disposizione il PHP. Nei casi più complessi è solo necessario lavorare ed elaborare questi parametri.
La tabella con tutti i parametri o chiavi disponibili sono visibili in questa tabella.

Giorni dall'inizio dell'anno

Esempio 1:
Qui sotto le istruzioni per ottenere il numero dei giorni trascorsi dal primo dell'anno.
Questo si ottiene con
date("z") per ottenere i giorni trascorsi dell'anno corrente
date('z',$t_stamp) per un qualsiasi altro anno usando il timestamp sulla data da controllare
il timestamp ($t_stamp) viene ottenuto usando la funzione PHP mktime() sulla data desiderata.

1
2
3
4
5
6
7
8
9
10
<?php
$giorno_corrente 
date("z"); 
echo 
"Giorni trascorsi per l'anno corrente: " $giorno_corrente "<br />\n";
//    ===================================================
$data "23/08/2012";
list(
$giorno$mese$anno$ora$minuti$secondi) = preg_split('/[-\.\/: ]/'$data);
$t_stamp mktime(000$mese$giorno$anno);
$giorno_corrente date('z',$t_stamp);
echo 
"Giorni trascorsi per la data " $data ": " $giorno_corrente "<br />\n";
?> 

Giorni trascorsi per l'anno corrente: 184
Giorni trascorsi per la data 23/08/2012: 235

Anno bisestile

Esempio 2:
Con le istruzioni che seguono possiamo stabilire se un anno è bisestile. Per ottenere questa informazione useremo la parola chiave "L" in questo modo:
date('L') per sapere se l'anno corrente è bisestile
date('L',$t_stamp) se si tratta di una data qualsiasi
il timestamp ($t_stamp) viene ottenuto usando la funzione PHP mktime() su una data fittizia che abbia l'anno desiderato.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
echo "Per la data corrente: " date('L') . "<hr />\n";;
$giorno "21";
$mese "08";
echo 
"Per qualsiasi altra data<br />\n";
for(
$i=2010;$i<2015;$i++) {
    
$t_stamp mktime(000$mese$giorno$i);
    
$bis date('L',$t_stamp);
    echo 
"Anno " $i " (".$bis."): ";
    echo (
$bis == 1) ? "bisestile<br />\n" "non bisestile<br />\n";
}
?>

Per la data corrente: 0
Per qualsiasi altra data
Anno 2010 (0): non bisestile
Anno 2011 (0): non bisestile
Anno 2012 (1): bisestile
Anno 2013 (0): non bisestile
Anno 2014 (0): non bisestile

Giorni dell'anno in esame

Esempio 3:
Per conoscere se l'anno in esame ha 365 giorni o 366 (se bisestile) si usa
date('L') per l'anno corrente
date('L',$t_stamp) per un anno qualsiasi
il timestamp ($t_stamp) viene ottenuto usando la funzione PHP mktime() su una data fittizia che abbia l'anno desiderato.
L'istruzione restituisce 0 (zero) se l'anno non è bisestile oppure 1 (uno) se è bisestile.
Quindi, per ottenere il numero di giorni dell'anno in esame è sufficiente eseguire la semplice somma 365 + $bis. E' ovvio che se $bis è uguale a 0 (zero) rimarranno i 365 giorni e se $bis è uguale a 1 (uno) avremo 366 giorni.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$bisest 
date('L');
$giorni_tot = (365 $bisest);
echo 
"L'anno corrente ha " $giorni_tot " giorni<hr />\n";
$giorno "21";
$mese "08";
for(
$i=2010;$i<2015;$i++) {
    
$t_stamp mktime(000$mese$giorno$i);
    
$bis date('L',$t_stamp);
    
$giorni_anno = (365 $bis);
    echo 
"L'anno " $i " ha " $giorni_anno " giorni<br />\n";
}
?>

L'anno corrente ha 365 giorni
L'anno 2010 ha 365 giorni
L'anno 2011 ha 365 giorni
L'anno 2012 ha 366 giorni
L'anno 2013 ha 365 giorni
L'anno 2014 ha 365 giorni

 

Giorni rimanenti alla fine dell'anno

Esempio 4:
Per quanto abbia cercato non sembra esistere una funzione php o una istruzione per ottenere il numero di giorni rimanenti alla fine dell'anno.
Per questo ho creato questo piccolo script in cui lo calcolo usando ed elaborando alcune istruzioni che abbiamo già viste in questa pagina.
Come per gli altri esempi eseguo il test sia sulla data corrente che su una data qualsiasi.

Le istruzioni che uso sono:

  • $giorni_trascorsi = date('z') per trovare il numero di giorni trascorsi dal capodanno
  • $bisest = date('L') per sapere se l'anno è bisestile o meno
  • $giorni_anno = (365 + $bisest) per conoscere il numero effettivo di giorni che ha l'anno in esame (365 o 366)
  • $giorni_restanti = ($giorni_anno - $giorni_trascorsi) per trovare, finalmente, il numero di giorni mancanti alla fine dell'anno in esame.

Se la data non è quella corrente assieme all'istruzione date('xxx') aggiungo anche il timestamp della data in esame trovato con $t_stamp = mktime(0, 0, 0, $mese, $giorno, $anno): date('xxx',$t_stamp).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$data 
date("d/m/Y");
$anno date('Y');
$giorni_trascorsi date('z');
$bisest date('L');
$giorni_anno = (365 $bisest);
$giorni_restanti = ($giorni_anno $giorni_trascorsi);
echo 
"Per la data corrente " $data "<br />\n";
echo 
"Giorni trascorsi " $giorni_trascorsi "<br />\n";
echo 
"Giorni rimanenti " $giorni_restanti "<br />\n";
echo 
"Se facciamo " $giorni_restanti " + " $giorni_trascorsi " otteniamo " . ($giorni_restanti $giorni_trascorsi) . "<hr />\n";
//    =============================
$data "23/11/2012";
list(
$giorno$mese$anno$ora$minuti$secondi) = preg_split('/[-\.\/: ]/'$data);
$t_stamp mktime(000$mese$giorno$anno);
$anno date('Y',$t_stamp);
$giorni_trascorsi date('z',$t_stamp);
$bisest date('L',$t_stamp);
$giorni_anno = (365 $bisest);
$giorni_restanti = ($giorni_anno $giorni_trascorsi);
echo 
"Per la data " $data "<br />\n";
echo 
"Giorni trascorsi " $giorni_trascorsi "<br />\n";
echo 
"Giorni rimanenti " $giorni_restanti "<br />\n";
echo 
"Se facciamo " $giorni_restanti " + " $giorni_trascorsi " otteniamo " . ($giorni_restanti $giorni_trascorsi) . "<br />\n";
?>

Per la data corrente 04/07/2022
Giorni trascorsi 184
Giorni rimanenti 181
Se facciamo 181 + 184 otteniamo 365
Per la data 23/11/2012
Giorni trascorsi 327
Giorni rimanenti 39
Se facciamo 39 + 327 otteniamo 366

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum