Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Differenza di orario

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    Differenza di orario

    Devo verificare se nella giornata odierna è stata superata l'ora delle 9:30.

    Come posso fare un differenza tra date considerando anche l'orario rispetto all'attuale?

    grazie

  2. #2
    Utilizza la funzione date,
    visualizzi la data e l'ora odierna e la confronti se ha superato le 9.30.

  3. #3
    Utente di HTML.it L'avatar di vikey89
    Registrato dal
    Apr 2009
    Messaggi
    333
    Semplice fai cosi:
    Codice PHP:
    <?php
    $data_attuale 
    = (date("G:i"));
    if (
    $data_attuale 9.30) {
    echo  
    "Sono passate le 9.30";
    } else {
    echo 
    "Ancora non sono passate le 9.30";
    }
    ?>
    In questo modo appena l'orario supera le 9.30 cambia azione!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ma confronti l'ora attuale nel formato 8:30 con il formato 9.30?

    Io ho utilizzato il timestamp.
    Ho trasformato l'ora attuale con mktime() e poi settato l'ora limite sempre con il mktime().

    Dopodichè le ho confrontate.

    Ho fatto così perchè è necessario verificare che l'orario passato sia quello della data odierna, mentre per il giorno no.

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Il confronto tra stringhe cmq e' lecita in questa situazione ... sol che le stringhe orarie devono avere lo stesso formato 9.30 non e' una stringa, e' un numero decimale .... controlla con la stringa "9:30" altrimenti come suggerito usa le timestamp ( cosa che faccio sempre anche io perche' il controllo e' piu' flessibile inoltre ti consente di gestire meglio i tipi date, time e datetime )

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho notato che la differenza di orario usando il timestamp non funziona correttamente. Credo che il problema sia dovuto all'ora legale?
    Questo il codice:

    Codice PHP:
        // Verifica se l'orario massimo di prenotazione è passato e setta la variabile per il controllo
        
    $data_ora_attuale mktime();
        if (
    $id_pasto == 1) {    // Pranzo
            
    $data_ora_impostata mktime(08,45,0,substr($data,5,2),substr($data,-2),substr($data,0,4));
        } else {    
    // Cena
            
    $data_ora_impostata mktime(08,30,0,substr($data,5,2),substr($data,-2),substr($data,0,4));
        }
        if ((
    $data_ora_attuale $data_ora_impostata) < 0) {
            
    $flgInOrario true;
            
    $nota "";
        } else {
            
    $flgInorario false;
            
    $nota "<p class=\"nota\" style=\"color:#F00\">Prenotazione fuori orario! (08:30 per Cena e 08:45 per Pranzo)</p>";
        } 
    Premesso che la data avrà formato 2010-09-30

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho provato alle ore 9:10:30 del 30/09/2010 a lanciare:

    Codice PHP:
        $data_ora_attuale mktime();
        
    $data_ora_attuale2 mktime(09,10,30,9,30,2010); 
    Il risultato è questo:

    attuale: 1285830632
    attuale2: 1285798230

    Come è possibile che ci sia questa differenza?
    Il numero dovrebbe essere uguale!

    1285830632 - 1285798230 = 32402 secondi di differenza

    se divido per 3600 ottengo le ore

    32402 / 3600 = 9 ore di differenza

    Perchè?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ho risolto: il problema è che scrivevo così:
    Codice PHP:
    $data_ora_impostata mktime(08,45,0,substr($data,5,2),substr($data,-2),substr($data,0,4)); 
    In fatti da manuale su internet http://www.php.net/manual/en/function.mktime.php l'ora dovrebbe essere con lo zero davanti per quello inferiori a doppia cifra.
    Questo invece non è vero. Scrivendo infatti così:
    Codice PHP:
    $data_ora_impostata mktime(8,45,0,substr($data,5,2),substr($data,-2),substr($data,0,4)); 
    Viene corretto.
    Inoltre in questo caso non dovrei nemmeno avere problemi di fuso orario in quanto il controllo lo faccio con lo stesso fuso.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.