- Home
- Categorie
- Coding e Sistemistica
- Coding
- Calcolare la differenza fra due date
-
OK,ho usato questa soluzione
[PHP]
$differenza=intval((time() - mktime(0,0,0,$str_giorno,$str_mese,$str_anno))/(31536000));
[/PHP]
mi da 24 come risultato...invece dovrebbe essere 26...eppure i dati che mi ricavo sono corretti....ho controllato
$str_giorno=30
$str_mese=03
$str_anno=1982
-
Hai ragione... colpa mia che nella fretta ho messo i dati secondo l'ordine "europeo", mentre i parametri di mktime sono
(ore, minuti, secondi, mese, giorno, anno),
secondo la scrittura "americana" che segue il formato mm-gg-yyyy[PHP]
$differenza=intval((time() - mktime(0,0,0,$str_mese,$str_giorno,$str_anno))/(31536000));
[/PHP]Alessandro
-
Grazie mille,ora funziona benissimo;)
-
Sorge un problemino,oggi 23 marzo nell èta dell utente mi segna già 27,l utente compie i 27 anni il 30 marzo...io vorrei che 27 me lo segnasse appunto il giorno del compleanno...e non prima:?credo sia dovuto alla funzione intval il problemino che cerca comunque di dare un valore intero al risultato ma non ne sarei sicuro visto che togliendo intval alla stringa mi da come risultato 27.0004106418 eppure la data di nascita dell utente è 30-03-1982 ....come potrei risolvere la cosa?
-
Ciao,
il problema non è dovuto ad intval, ma agli anni bisestili per i quali non vale la corrispondenza:1 anno = 31536000 secondi
Alessandro
-
Quindi non c'è modo di risolvere...giusto?
-
C'è sempre un modo di risolvere:
[PHP]
$eta = date("Y",time())-$str_anno-(date("md",time())<($str_mese.$str_giorno));
[/PHP]Alessandro
-
Grazie!
Sei un mito;)
-
Ciao Magicale,
ho notato questo problema....praticamente ho un utente come data di
nascita uguale a 23 04 1971...perchè nel calcolo degli anni mi da un -1 invece dell ètà esatta dell utente?
-
Ciao,
se provi così:
[PHP]
$str_giorno="23";
$str_mese="04";
$str_anno="1971";
$eta = date("Y",time())-$str_anno-(date("md",time())<($str_mese.$str_giorno));
[/PHP]
Il risultato viene corretto. L'errore potrebbe essere nei dati, verifica che siano recuperati correttamente.Alessandro