Differenza fra due date

  • Creatore Discussione Creatore Discussione gracito
  • Data di inizio Data di inizio

gracito

Utente Attivo
30 Mag 2010
109
0
0
Ciao a tutti

devo fare la differenza fra due date che recupero da un db, le date Data_nascita e Data_Prova e devo ottenere in $eta gli anni e i mesi, es 15,11.
Ho fatto alcune prove con questa funzione ma non ci sono riuscito.
Scusate ma da questo pc non mi funziona il tag php.

PHP:
<?php 
$datetime1 = date_create('2009-10-11'); 
$datetime2 = date_create('2009-10-13'); 
$interval = date_diff($datetime1, $datetime2); 
echo $interval->format('%R%d days'); 
?>

Questo è il codice della mia pagina.

PHP:
 $db = mysql_connect("localhost","root",""); 
mysql_select_db("palestra", $db); 
     
$result =mysql_query("SELECT * FROM test WHERE " ); 


while($myrow=mysql_fetch_array($result)) 


echo  "<tr> 
<td>$myrow[Data_nascita]</td> 
<td>$myrow[Cognome]</td> 
<td>$myrow[Nome]</td> 
<td>$myrow[Data_Prova]</td> 
<td>$myrow[Tipo_Prova]</td> 
<td>$eta</td>"; 


?>

Grazie
 
Ultima modifica di un moderatore:
Ciao

Ho dato uno sguardo alle datediff ma non ci sono riuscito.
Il codice è questo


PHP:
 $db = mysql_connect("localhost","root",""); 
mysql_select_db("palestra", $db); 
     
$result =mysql_query("SELECT * FROM test WHERE " ); 


while($myrow=mysql_fetch_array($result)) 


echo  "<tr> 
<td>$myrow[Data_nascita]</td> 
<td>$myrow[Cognome]</td> 
<td>$myrow[Nome]</td> 
<td>$myrow[Data_Prova]</td> 
<td>$myrow[Tipo_Prova]</td> 
<td>$eta</td>"; 

?>


mi spiegheresti come integri questo codice con il mio?

PHP:
$datetime1 = date_create('2009-10-11'); 
$datetime2 = date_create('2009-10-13'); 
$interval = date_diff($datetime1, $datetime2); 
echo $interval->format('%R%d days');


Grazie
 
Ultima modifica di un moderatore:
Non ne posso più di ripeterlo: ma cos'avete contro i tag di codice? Vi da davvero così fastidio scriverli nel vostro post? Non mettendoli, soprattutto con script lunghi, il post diventa praticamente illeggibile. Quindi vi prego di usarli.
 
ciao
se ho capito bene tu vuo ottenere la differanza tra $myrow[Data_nascita] e $myrow[Data_Prova], giusto?
se le due date sono entrambe nel formato anno-mese-giorno (es 1987-12-02) e solo in qusto caso potresi fare in quasto modo
1. trasformi le date (che sono in formato USA in timestamp
PHP:
<?php
$timestamp_data_1=$timestamp=strtotime ($myrow['Data_nascita']);
$timestamp_data_2=$timestamp=strtotime ($myrow['Data_Prova']);
?>
2. fai la differenza
PHP:
<?php
$timestamp_differenza=$timestamp_data_2-$timestamp_data_1;//espresso in secondi
?>
ti fai uno script che ti trasformi la differenza in giorni
(per l'anno e per il mese è piu difficile in quanto anni di 365 o 366 giorni, mesi da 30 o 31 o 28 o 29 giorni)
considerando che in un giorno= 24*60*60 secondi
PHP:
<?php
$giorni_trascorsi=$timestamp_differenza/(24*60*60);
//e arrotondi all'intero
$giorni_trascorsi=round($giorni_trascorsi,0);// se gg= 3.4 -> 3 , se gg= 3.6 -> 4
?>
poi stampi dove vuoi il risultato
Il tutto dovrebbe essere condito da vari controlli sulla date
sono effettivamente in formato 1999-11-30?
le date sono giuste? es non è 1999-02-31? (31 febbraio)
ecc...

p.s.
mysql_fetch_array, come lo stai usando, restituisce un array associativo (nomi dei campi) e gli array associativi si scrivono con gli apici
(gli scalari sensa)
$myrow['Data_nascita'] valore del campo "data_nascita"
$myrow[1] valore del campo 1
 

Discussioni simili