• Bannato User Attivo

    strtoime e la data maggiore e minore

    Praticamente avevo scritto una cosa del genere:

    [PHP]$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 < $datamod2) {
    echo "Devi attendere altri 60 secondi";
    exit;
    }[/PHP]

    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?

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


  • User

    ma sbaglio o strtotime dovrebbe restituire un date formato unix time?
    quindi ti basterà fare cosi'

    $timer=fopen("zero.dat","r");
    $timer2=fread($timer,filesize("zero.dat"));
    $datamod = strtotime($timer2);
    $sum = mktime ( date("h"), date("i"), date("s") + 60, date("m"), date("d"), date("Y") );

    if ($datamod < $sum) {
    echo "Devi attendere altri 60 secondi";
    exit;
    }


  • Bannato User Attivo

    @Melkor said:

    ma sbaglio o strtotime dovrebbe restituire un date formato unix time?
    quindi ti basterà fare cosi'

    $timer=fopen("zero.dat","r");
    $timer2=fread($timer,filesize("zero.dat"));
    $datamod = strtotime($timer2);
    $sum = mktime ( date("h"), date("i"), date("s") + 60, date("m"), date("d"), date("Y") );

    if ($datamod < $sum) {
    echo "Devi attendere altri 60 secondi";
    exit;
    }

    non funziona cosi....:?

    mi da sempre da attendere altri 60 secondi

    e mi alle costanti ha assegnato i valori di:

    -1 e 1171517397

    e quindi fa una variabile di:

    if (-1 < 1171517397)

    :bho: ?


  • User

    -1 è il valore restituito dalla funzione strtotime se non viene riconosciuto il formato della data!
    è molto probabile che nn riconosca la data nel file zero.dat

    molto probabilmente perchè Gen 12, 2007 1:16:17 pm è scritta in italiano 🙂 lui l'aspetta in eng 😉


  • Bannato User Attivo

    @Melkor said:

    -1 è il valore restituito dalla funzione strtotime se non viene riconosciuto il formato della data!
    è molto probabile che nn riconosca la data nel file zero.dat

    molto probabilmente perchè Gen 12, 2007 1:16:17 pm è scritta in italiano 🙂 lui l'aspetta in eng 😉

    e come diventa in inglese?


  • User

    la data dentro il file zero.dat la metti te? tramite altro script? o te la genera qualche applicazione da te non controllabile?

    perchè se è cosi' gli fai mettere una data di questo formato:
    "Y-m-d H:i:s"
    strtotime sicuramente la riconosce e tutto funziona!


  • Bannato User Attivo

    Ma è normale che il primo $datamod sia maggiore al secondo $sum?

    ma non dovrebbe essere il contrario?

    comunque non funziona ottengo questo

    $datamod $sum
    1171722184 e 1171679250

    è chiaro che cosi non entrerà mai nella variabile, e neanche se faccio l'iverso funziona.....che devo fare.


  • User

    sum nn è altro che la data e ora di quel momento + 60 secondi

    nel tuo file nn so che date c'è quindi vedi te 🙂

    la soluzione ce l'hai 🙂


  • Bannato User Attivo

    @Melkor said:

    sum nn è altro che la data e ora di quel momento + 60 secondi

    nel tuo file nn so che date c'è quindi vedi te 🙂

    la soluzione ce l'hai 🙂

    La data dentro zero.dat è 2007-02-17 15:18:21
    la data in cui ho provato lo script era circa 2 minuti avanti.

    Ebbene ottengo il primo maggiore del secondo ...molto maggiore :():

    non c'è quasi mai un equilibrio o si ha in tempi ben oltre i 60 secondi.... :mmm:


  • Bannato User Attivo

    @alessiofbt said:

    La data dentro zero.dat è 2007-02-17 15:18:21
    la data in cui ho provato lo script era circa 2 minuti avanti.

    Ebbene ottengo il primo maggiore del secondo ...molto maggiore :():

    non c'è quasi mai un equilibrio o si ha in tempi ben oltre i 60 secondi.... :mmm:

    non è che non capisce che c'è differenza tra le 11 del mattino e quelle di sera?

    perchè facendo alcuni calcoli come questi:

    [PHP]$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;
    }[/PHP]

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

    quindi cosa dovrei fare ora???? :mmm: