PDA

View Full Version : [php]strtotime data maggiore e minore


kevindavidmitnick
03-03-2007, 00:38
OPS scusate il titolo era [php]strtotime data maggiore e minore

Praticamente avevo scritto una cosa del genere:

$timer=fopen("zero.dat","r");
$timer2=fread($timer,filesize("zero.dat"));
$datadioggi = date ("M d, Y g:i:s a");
$datamod = date('M d, Y g:i:s a', strtotime("$timer2 + 1 minute"));
if ($datadioggi < $datamod) {
echo "Devi attendere altri 60 secondi";
exit;
}

dove dentro zero.dat c'è la data:
Gen 12, 2007 1:16:17 pm

dovrebbe controllare se la data scritta in zero.dat sia minore di almeno 60 secondi da quella attuale.

Tutto va bene se vengono usate due date dello stesso mese, ma se ne utilizzo una di gennaio e l'attuale di febbario ho seri problemi.

Come posso fare?

Chiedendo su un altro forum ho ricevuto questo:

$timer2 = "2007-02-17 11:18:21";
$datamod = strtotime($timer2);
$sum = mktime ( date("h"), date("i"), date("s") + 60, date("m"), date("d"), date("Y") );

$op = $datamod - $sum;
echo "$datamod < $sum e quindi differenza di $op";
if ($datamod < $sum) {
echo "Devi attendere altri 60 secondi";
exit;
}

Ma è sbagliato perchè alle ore 23:18 entrambi coincidono più o meno al variare dei secondi.

non è necessario comunque riparare questo se avete altre alternative postate pure ;)

kevindavidmitnick
06-03-2007, 14:38
Quando devi fare valutazioni in secondi l'ideale è usare i timestamp invece delle date estese.


# Apertura del file in lettura
$handle=fopen("zero.dat","r");
# Lettura della data contenuta nel file (suppongo sia una stringa formattata)
# Nel caso nel file sia contenuto un timestamp, rimuovere la funzione strtotime() dalla riga seguente
$timestamp=strtotime(fread($handle,filesize("zero.dat")));
# Se il timestamp attuale non è superiore a quello letto nel file di almeno 60 secondi
# printa il messaggio ed esce
if (time() - $timestamp < 60) {
echo "Devi attendere altri 60 secondi";
exit;
}

Grazie funziona :D

E se volessi stampare a video quanti secondi mancano da aspettare ancora?

andbin
06-03-2007, 14:59
E se volessi stampare a video quanti secondi mancano da aspettare ancora?Basta che stampi il valore ottenuto dalla differenza tra i due timestamp.