Newsgroup: it.comp.www.php
Titolo: Date

 
Ciao a tutti,
ho due date, una è quella attuale e l'altra viene estrapolata dal db.
Come posso fare per far verificare se tra una data e l'altra sono passati 
almeno 30 giorni?
Grazie
Marco 

 passati almeno 30 giorni?
Utilizza 
http://www.php.net/mktime
, crea una data a 30 gg dalla data
minore e confronta la nuova data con quella maggiore.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 minore e confronta la nuova data con quella maggiore.
Mi puoi fare un esempio, perchč con questo metodo a volte mi funziona e a 
volte no

 e a volte no
Posta il codice che a volte ti funziona e a volte no.


> Posta il codice che a volte ti funziona e a volte no.
$data=$riga["data"];  // data presa dal db
$da=(date ("d-m-Y",mktime(0,0,0,date("m"),date("d")-30,date("Y"))));  // 
data di oggi meno 30 giorni fa
$datt=mktime($data);
$dataa=mktime($da);
if ($datt > $dataa)
{
}
else
{
}
Ogni refresh usando mktime mi da valori diversi. 

 $dataa=mktime($da);
mktime di una stringa?


 mktime di una stringa?
Si ho sbagliato, mi puoi dire come dovrei fare.
Grazie 

 Si ho sbagliato, mi puoi dire come dovrei fare.
[mi quoto]
Utilizza 
http://www.php.net/mktime
, crea una data a 30 gg dalla data
minore e confronta la nuova data con quella maggiore.
[/mi quoto]
-- 
I am what I am, I do what I can


 [/mi quoto]
Si ma me lo dici come faccio a creare una data a 30 giorni da quella minore 
se quella minore mi arriva dal select della tabella cosě:
$data=$riga["data"];

 $data=$riga["data"];
Che formato ha $data?
Una cosa tipo YYYYMMDD?
Basta usare substr e mktime.


Prova con:
$diff = abs(mktime(0,0,0,$mese_1,$giorno_1,$anno_1) - 
mktime(0,0,0,$mese_2,$giorno_2,$anno_2))/86400 ;
if ($diff >= 30)
{
	//Sono passati 30 o piu' gg
}
else
{
	//Sono passati meno di 30 gg
}
Marco ha scritto:


 Prova con:
Per favore, 
http://wiki.news.nic.it/QuotarBene


> Per favore, 
http://wiki.news.nic.it/QuotarBene
Che fastidio quando invece che dire come creare una data con 30 gg di
differenza dici come quotare
Il messaggio mal quotato era l'ultimo e non ci sarebbe stato, se avessi
risposto 3 post prima!!
;-P

 avessi risposto 3 post prima!!
Non e' che tu abbia aggiunto nulla alla discussione.


 
Grazie per il consiglio.

 }
Facendo cosě $diff mi da un numero del tipo : 12962.916678241 , come posso 
convertirlo per fare if($diff >= 30) ? 

 Come posso fare per far verificare se tra una data e >l'altra sono passati almeno 30 giorni?
sono 1/2 ot ma puoi farlo con sql:
SELECT campodata FROM tabella WHERE DATEDIFF(campodata,dataattuale) >=
30;
mi sembra che la query funzioni solo se gli argomenti passati a
DATEDIFF sono nella forma YYYY-MM-DD hh:mm:ss
rae

 
Probabilmente sono errati i valore che passi come 
$mese_...,$giorno_...,$anno_...
Ti posto uno script di esempio, se le date sono in formato MySql
<?php
$data_1 = date("Y-m-d") ; //Data di oggi ...
$data_2 = "2005-07-02" ;  //Meno di 30 giorni ...
//$data_2 = "2005-08-15" ; //Piu' di 30 giorni ...
list($anno_1,$mese_1,$giorno_1) = explode("-",$data_1);
list($anno_2,$mese_2,$giorno_2) = explode("-",$data_2);
$diff = abs(mktime(0,0,0,$mese_1,$giorno_1,$anno_1) - 
mktime(0,0,0,$mese_2,$giorno_2,$anno_2))/86400 ;
echo $diff."<br>";
if ($diff >= 30)
{
     echo 'Sono passati 30 o piu\' gg' ;
}
else
{
     echo 'Sono passati meno di 30 gg';
}
?>
Io l'ho provato e funziona
Spero sia postato correttamente