Differenza tra due date
Gli argomenti di questa pagina
|
Queste sono alcune date su cui faremo dei calcoli in questa pagina
04/07/2007
07/01/2008
18/08/2009
09/07/1997
04/07/2002
29/07/2004
24/06/2002
07/09/2007
12/07/2005
27/06/1992
28/06/2007
12/01/1947
Useremo queste date per testare alcune funzioni per eseguire calcoli su differenza di date. Penso che per questo tipo di lavoro sia più indicato l'uso di funzioni che semplificano e rendono gli script più trasportabili.
Se si desidera mandare alla funzione due date anzichè una per calcolare la differenza tra due date determinate dall'utente è possibile, con piccole modifiche, trasformare la funzione in modo che accetti due parametri ($start, $end) anzichè un solo parametro.
Faccio un esempio.
Nella funzione personale mostrata a sinistra viene eseguito il calcolo tra la data mandata come argomento della funzione e la data corrente.
Nella funzione personale mostrata a destra il calcolo viene eseguito tra due date mandate come argomento.
|
|
Come è visibile nei due risultati che si vedono qui sotto otteniamo gli stessi dati perchè nella funzione utente modificata, come secondo argomento ho usato la data corrente che nella prima funzione veniva calcolata in automatico.
Per la data 04/07/2007 trascorsi 15 anni Per la data 07/01/2008 trascorsi 13 anni Per la data 18/08/2009 trascorsi 12 anni Per la data 09/07/1997 trascorsi 24 anni Per la data 04/07/2002 trascorsi 20 anni Per la data 29/07/2004 trascorsi 17 anni Per la data 24/06/2002 trascorsi 19 anni Per la data 07/09/2007 trascorsi 14 anni Per la data 12/07/2005 trascorsi 16 anni Per la data 27/06/1992 trascorsi 29 anni Per la data 28/06/2007 trascorsi 14 anni Per la data 12/01/1947 trascorsi 74 anni |
Per la data 12/01/1947 trascorsi 15 anni Per la data 12/01/1947 trascorsi 13 anni Per la data 12/01/1947 trascorsi 12 anni Per la data 12/01/1947 trascorsi 24 anni Per la data 12/01/1947 trascorsi 20 anni Per la data 12/01/1947 trascorsi 17 anni Per la data 12/01/1947 trascorsi 19 anni Per la data 12/01/1947 trascorsi 14 anni Per la data 12/01/1947 trascorsi 16 anni Per la data 12/01/1947 trascorsi 29 anni Per la data 12/01/1947 trascorsi 14 anni Per la data 12/01/1947 trascorsi 74 anni |
Dopo questa premessa possiamo passare ad esaminare alcune funzioni che ci restituiscono il numero dei giorni e/o dei mesi tra due date.
Differenza in giorni tra due date
Esempio 1: La funzione utente datediff() compie questo lavoro:
divide le date mandate come argomenti nelle sue parti più semplici usando la funzione PHP preg_split() e la regex che contiene tutti i caratteri che più comunemente vengono usati come separatori tra le parti che compongono la data
quindi viene elaborata la differenza usando la funzione PHP mktime() per lavorare coi timestamp delle date.
1
|
<?php
|
Tra la data 07/01/2008 e la data 04/07/2022 sono trascorsi 5291 giorni
Tra la data 18/08/2009 e la data 04/07/2022 sono trascorsi 4703 giorni
Tra la data 09/07/1997 e la data 04/07/2022 sono trascorsi 9126 giorni
Tra la data 04/07/2002 e la data 04/07/2022 sono trascorsi 7305 giorni
Tra la data 29/07/2004 e la data 04/07/2022 sono trascorsi 6549 giorni
Tra la data 24/06/2002 e la data 04/07/2022 sono trascorsi 7315 giorni
Tra la data 07/09/2007 e la data 04/07/2022 sono trascorsi 5414 giorni
Tra la data 12/07/2005 e la data 04/07/2022 sono trascorsi 6201 giorni
Tra la data 27/06/1992 e la data 04/07/2022 sono trascorsi 10964 giorni
Tra la data 28/06/2007 e la data 04/07/2022 sono trascorsi 5485 giorni
Tra la data 12/01/1947 e la data 04/07/2022 sono trascorsi 27566 giorni
Calcolo degli anni tra una data e quella corrente
Esempio 2: La funzione utente getAge()
La funzione confronta la data mandata come argomento con la data corrente.
Una volta esplosa la data mandata come argomento esegue delle differenze tra le parti della data corrente e la parti della data in esame.
Se la differenza dei giorni o quella dei mesi è minore di 0 (zero) viene usato un correttivo sulla differenza degli anni decrementandola di una unità.
1
|
<?php
|
Per la data 07/01/2008 trascorsi 13 anni
Per la data 18/08/2009 trascorsi 12 anni
Per la data 09/07/1997 trascorsi 24 anni
Per la data 04/07/2002 trascorsi 20 anni
Per la data 29/07/2004 trascorsi 17 anni
Per la data 24/06/2002 trascorsi 19 anni
Per la data 07/09/2007 trascorsi 14 anni
Per la data 12/07/2005 trascorsi 16 anni
Per la data 27/06/1992 trascorsi 29 anni
Per la data 28/06/2007 trascorsi 14 anni
Per la data 12/01/1947 trascorsi 74 anni
Calcolare gi anni con una funzione personale
Esempio 3: La funzione utente calcola_anni()
Anche in questo caso la
funzione confronta la data mandata come argomento con la data corrente e anche in questo caso, dopo aver esplosa la data mandata come argomento, viene eseguita la differenza tra l'anno corrente e quello della data mandata come argomento.
Quindi la dovuta correzione nel caso che il mese corrente sia inferiore al mese della data o che il giorno corrente sia inferiore al giorno della data mandata come argomento.
1
|
<?php
|
Anni trascorsi per la data 07/01/2008: 13
Anni trascorsi per la data 18/08/2009: 12
Anni trascorsi per la data 09/07/1997: 24
Anni trascorsi per la data 04/07/2002: 20
Anni trascorsi per la data 29/07/2004: 17
Anni trascorsi per la data 24/06/2002: 19
Anni trascorsi per la data 07/09/2007: 14
Anni trascorsi per la data 12/07/2005: 16
Anni trascorsi per la data 27/06/1992: 29
Anni trascorsi per la data 28/06/2007: 14
Anni trascorsi per la data 12/01/1947: 74
Calcolo degli anni tra due date
Esempio 4: La funzione utente getYear()
La funzione
è simile alle precedenti ma richiede come argomenti la data di partenza e la data finale. E' ininfluente se per questo esempio come data finale ho usato la data corrente.
Dopo aver esploso le due date nei loro componenti più elementari, calcolo la differenza tra i due anni.
Questa differenza viene corretta con un decremento di una unità se il mese finale è minore del mese iniziale o se il giorno finale è minore di quello iniziale.
1
|
<?php
|
Tra 07/01/2008 e 04/07/2022 sono trascorsi 13 anni
Tra 18/08/2009 e 04/07/2022 sono trascorsi 12 anni
Tra 09/07/1997 e 04/07/2022 sono trascorsi 24 anni
Tra 04/07/2002 e 04/07/2022 sono trascorsi 20 anni
Tra 29/07/2004 e 04/07/2022 sono trascorsi 17 anni
Tra 24/06/2002 e 04/07/2022 sono trascorsi 19 anni
Tra 07/09/2007 e 04/07/2022 sono trascorsi 14 anni
Tra 12/07/2005 e 04/07/2022 sono trascorsi 16 anni
Tra 27/06/1992 e 04/07/2022 sono trascorsi 29 anni
Tra 28/06/2007 e 04/07/2022 sono trascorsi 14 anni
Tra 12/01/1947 e 04/07/2022 sono trascorsi 74 anni
La differenza in anni, mesi, giorni tra due date
Esempio 5: La funzione utente diff_date()
Cominciamo a voler ottenere qualcosa di più dai nostri calcoli sulle date. Con questa funzione, che prende per argomenti due date differenti, otteniamo il numero degli anni, dei mesi e dei giorni. Ma anche il nostro codice comincia ad essere più complesso. Per questo motivo alcune delle istruzioni principali mostrano già dei commenti.
1
|
<?php
|
La differenza tra 07/01/2008 e 04/07/2022 è di: 14 anni, 5 mesi, 28 giorni
La differenza tra 18/08/2009 e 04/07/2022 è di: 12 anni, 10 mesi, 17 giorni
La differenza tra 09/07/1997 e 04/07/2022 è di: 24 anni, 11 mesi, 26 giorni
La differenza tra 04/07/2002 e 04/07/2022 è di: 20 anni, 0 mesi, 0 giorni
La differenza tra 29/07/2004 e 04/07/2022 è di: 17 anni, 11 mesi, 6 giorni
La differenza tra 24/06/2002 e 04/07/2022 è di: 20 anni, 0 mesi, 10 giorni
La differenza tra 07/09/2007 e 04/07/2022 è di: 14 anni, 9 mesi, 27 giorni
La differenza tra 12/07/2005 e 04/07/2022 è di: 16 anni, 11 mesi, 23 giorni
La differenza tra 27/06/1992 e 04/07/2022 è di: 30 anni, 0 mesi, 7 giorni
La differenza tra 28/06/2007 e 04/07/2022 è di: 15 anni, 0 mesi, 6 giorni
La differenza tra 12/01/1947 e 04/07/2022 è di: 75 anni, 5 mesi, 23 giorni