Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32

Discussione: date() o gmdate()

  1. #1
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544

    date() o gmdate()

    Ho fatto una prova:

    se metto il codice con date() a video mette 21:51 GMT +01:00

    Codice PHP:
    $giorni1=array ("Dom,","Lun,","Mar,","Mer,","Gio,","Ven,","Sab,");  
    $data_oggi=$giorni1[date("w"time())]." ".date("d-m-y");    
    $orario date("H:i \G\M\T P"); 
    se invece metto gmdate() a video mette 20:51 GMT +00:00


    Codice PHP:
    $giorni1=array ("Dom,","Lun,","Mar,","Mer,","Gio,","Ven,","Sab,");  
    $data_oggi=$giorni1[gmdate("w"time())]." ".gmdate("d-m-y");    
    $orario gmdate("H:i \G\M\T P"); 
    Ma non dovrebbe essere il contrario? Il server della prova è altervista.org

  2. #2
    ??????????????

    E' giusto.

    date(); utilizza il fuso locale, il tuo server risiede nella fascia oraria +1 ora, quindi risiede sullo stesso fuso orario di Roma / Berlino.

    gmdate(); invece forza la visualizzazione dell'orario di "greenwich mean time", cioè del meridiano di Greenwick. Chiaramente se noi (a Roma/Berlino) siamo +01:00 (un'ora in avanti) loro sono naturalmente un'ora indietro rispetto a noi, ovvero sullo 00:00.

    Se poi chiedi il fuso orario su Greenwich... beh il fuso orario è sempre +00:00, poichè il fuso orario si calcola proprio a partire dal meridiano di Greenwich.

    GMT = greenwich mean time.

    Ora italiana: 21:51 (con il fuso di +01:00 rispetto al GMT)
    Ora del GMT: 20:51 (con il fuso di +00:00 rispetto al GMT - cioè se stesso).

    Nota bene che in php la funzione gmdate non calcola mai il fuso ma restituisce a prescindere 0 giacchè il gmdate è già sul GMT (questa nota la puoi leggere sulla guida).

  3. #3
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Originariamente inviato da platone
    ??????????????

    E' giusto.

    date(); utilizza il fuso locale, il tuo server risiede nella fascia oraria +1 ora, quindi risiede sullo stesso fuso orario di Roma / Berlino.

    gmdate(); invece forza la visualizzazione dell'orario di "greenwich mean time", cioè del meridiano di Greenwick. Chiaramente se noi (a Roma/Berlino) siamo +01:00 (un'ora in avanti) loro sono naturalmente un'ora indietro rispetto a noi, ovvero sullo 00:00.

    Se poi chiedi il fuso orario su Greenwich... beh il fuso orario è sempre +00:00, poichè il fuso orario si calcola proprio a partire dal meridiano di Greenwich.

    GMT = greenwich mean time.

    Ora italiana: 21:51 (con il fuso di +01:00 rispetto al GMT)
    Ora del GMT: 20:51 (con il fuso di +00:00 rispetto al GMT - cioè se stesso).

    Nota bene che in php la funzione gmdate non calcola mai il fuso ma restituisce a prescindere 0 giacchè il gmdate è già sul GMT (questa nota la puoi leggere sulla guida).
    Ora è più chiaro, tengo date(), vorrei fare una prova, far finta di mandarmi un messaggio da un server es. americano per vedere se a video mette il fuso che c'è là, dici che si può fare una prova del genere da qui?

  4. #4
    Originariamente inviato da Ht28
    Ora è più chiaro, tengo date(), vorrei fare una prova, far finta di mandarmi un messaggio da un server es. americano per vedere se a video mette il fuso che c'è là, dici che si può fare una prova del genere da qui?
    Certo che puoi.
    Le date e i fusi sono un argomento abbastanza bastardo.

    Il motivo è il DLS (che non è una pasticca) ovvero il DayLigthSaving time (in italiano è l'ora SOLARE/LEGALE).

    Si applica anche a Greenwich pertanto in quel tale periodo eseguire date(); in Italia visualizzerà +02:00 (anche se noi in realtà siamo sul fuso +01:00). In Inghilterra eseguire date(); durante tale periodo visualizzerà +01:00 mentre eseguendo gmdate(); viene cmq restituita la data +00:00.

    Il DLS non viene applicato in tutto il mondo e cambia la data in cui entra in vigore da Paese a Paese, pertanto potresti trovare delle discordanze.

  5. #5
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Originariamente inviato da platone
    Certo che puoi.
    Le date e i fusi sono un argomento abbastanza bastardo.

    Il motivo è il DLS (che non è una pasticca) ovvero il DayLigthSaving time (in italiano è l'ora SOLARE/LEGALE).

    Si applica anche a Greenwich pertanto in quel tale periodo eseguire date(); in Italia visualizzerà +02:00 (anche se noi in realtà siamo sul fuso +01:00). In Inghilterra eseguire date(); durante tale periodo visualizzerà +01:00 mentre eseguendo gmdate(); viene cmq restituita la data +00:00.

    Il DLS non viene applicato in tutto il mondo e cambia la data in cui entra in vigore da Paese a Paese, pertanto potresti trovare delle discordanze.
    A me basta che mette a video il vero orario del visitatore; io ho già un codice che tramite un DB lo confronta con l'IP del visitatore e mette a video la nazione e la sua bandierina,

    Ho trovato un programma trial e lo sto provando Anonymizer, effettivamente a video mi manda USA e la sua bandiera, ma il fuso orario è sempre +1.00, che modifica dovrei fare al mio codice?

    Codice PHP:
    //Funzione per il nome Country e la bandierina
    function iptocountry($ip) { 
    $numbers explode("."$ip); 

    include(
    "ip_flags/ip_files/".$numbers[0].".php"); 
    $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);

    //Pesca il nome della Country da "ip_flags/ip_files/countries.php"
    foreach($ranges as $key => $value){ 
    if(
    $key<=$code){ 
    if(
    $ranges[$key][0]>=$code){
    $two_letter_country_code=$ranges[$key][1];break;
    }
     } 
      } 
    if (
    $two_letter_country_code==""){
    $two_letter_country_code="unkown";

    return 
    $two_letter_country_code


    //Recupera l'ip del Visitor e lo confronta con quell0 in "ip_flags/ip_files/countries.php" 
    $ipVisitor=$_SERVER['REMOTE_ADDR']; 
    $two_letter_country_code=iptocountry($ipVisitor);

    //Pesca la bandierina della Country da "ip_flags/flags"
    $file_to_check="ip_flags/flags/$two_letter_country_code.gif";
    if (
    file_exists($file_to_check)){ 
    $bandierina ="<img class=\"borderBandieraScrivimi1\" src=\"http://xxx.it/$file_to_check\" width=\"16\" height=\"12\" alt=\"\" title=\"\" />";
    }
    else

    $bandierina "<img class=\"borderBandieraScrivimi1\" src=\"http://xxx.it/flags/NOFLAG.gif\" width=\"16\" height=\"12\" alt=\"noflag\" title=\"noflag\" />"
    }

  6. #6
    Originariamente inviato da Ht28
    A me basta che mette a video il vero orario del visitatore; io ho già un codice che tramite un DB lo confronta con l'IP del visitatore e mette a video la nazione e la sua bandierina,

    Ho trovato un programma trial e lo sto provando Anonymizer, effettivamente a video mi manda USA e la sua bandiera, ma il fuso orario è sempre +1.00, che modifica dovrei fare al mio codice?
    Non so se è fattibile usando semplicemente PHP, forse no.
    Per stampare il fuso orario del navigatore in genere si usa Javascript, essendo eseguito in locale sul computer Javascript utilizza le impostazioni del navigatore e non le impostazioni server.

    Non puoi salvare il valore Javascript a meno che non pensi di stamparlo e poi inviartelo mediante script.

    Se vuoi solo stamparlo a schermo utilizza Javascript senza arrovellarti troppo.

  7. #7
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Originariamente inviato da platone
    Non so se è fattibile usando semplicemente PHP, forse no.
    Per stampare il fuso orario del navigatore in genere si usa Javascript, essendo eseguito in locale sul computer Javascript utilizza le impostazioni del navigatore e non le impostazioni server.

    Non puoi salvare il valore Javascript a meno che non pensi di stamparlo e poi inviartelo mediante script.

    Se vuoi solo stamparlo a schermo utilizza Javascript senza arrovellarti troppo.
    Spiegami, quel codice è collegato al DB sempre in php, contiene un range di ip che equivalgono ad una nazione.

    Se uso js, come fa a pescare nel DB che è in php?

  8. #8
    Originariamente inviato da Ht28
    Spiegami, quel codice è collegato al DB sempre in php, contiene un range di ip che equivalgono ad una nazione.

    Se uso js, come fa a pescare nel DB che è in php?
    E' irrilevante la nazione del tuo DB per il JS che gira in locale, lui semplicemente utilizza la data impostata localmente sul computer.

    Se hai Windows puoi vedere un orologio in basso a sinistra sulla barra delle applicazioni, JS estrae la data dalla stessa variabile d'ambiente per questo viene visualizzato l'orario corrente con le impostazioni locali del computer in uso (il che non ha nulla a che vedere con il fuso e l'orario effettivo).

    Infatti se l'impostazione del proprio computer è sbagliata, JS mostrerà l'ora sbagliata giacchè tale è l'impostazione locale, non farà alcun calcolo sul fuso.

  9. #9
    Utente bannato L'avatar di Ht28
    Registrato dal
    May 2006
    Messaggi
    1,544
    Originariamente inviato da platone
    E' irrilevante la nazione del tuo DB per il JS che gira in locale, lui semplicemente utilizza la data impostata localmente sul computer.

    Se hai Windows puoi vedere un orologio in basso a sinistra sulla barra delle applicazioni, JS estrae la data dalla stessa variabile d'ambiente per questo viene visualizzato l'orario corrente con le impostazioni locali del computer in uso (il che non ha nulla a che vedere con il fuso e l'orario effettivo).

    Infatti se l'impostazione del proprio computer è sbagliata, JS mostrerà l'ora sbagliata giacchè tale è l'impostazione locale, non farà alcun calcolo sul fuso.
    Si ho XP, perciò dici che in js posso stampare il vero orario del visitatore? Se si dove trovo il codice?

  10. #10
    Originariamente inviato da Ht28
    Si ho XP, perciò dici che in js posso stampare il vero orario del visitatore? Se si dove trovo il codice?
    http://www.w3schools.com/jsref/tryit...=tryjsref_date

    PS: su XP l'orologio è in basso, su Linux è in alto oppure dipende dall'interfaccia, insomma, l'orario non c'è solo su Win... vale per tutti gli OS.

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.