Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139

    Differenza tra fusi orari in Php 4

    Devo vedere quante ore di diffenrenza ci sono tra due orari in php 4, questo é il codice che utilizzo. attualmente (per via dell'ora legale) ci sono -6 ore di differenza tra new york e roma. Il formato delle ore é 24 ore.

    <?php
    $tz= "America/New_York";
    putenv("TZ=$tz");
    $ny = date("H:i");

    $tz2 = "Europe/Rome";
    putenv("TZ=$tz2");
    $ita = date("H:i");

    echo $div = $ny - $ita;
    ?>

    Fin qui tutto ok il problema nasce quando in Italia si supera la mezzanotte mi vien fuori ad esempio 18:00(orario new york) - 00:00(orario italia) = 18 ore di differenza e mi sballa tutto dovrei avere sempre 6 ore di differnza.

    Qulcuno sa come si può sistemare?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Perché usi ancora il php4?


    Comunque fai semplicemente una differenza fra i timestamp delle date generate e riconverti la differenza no?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    Uso ancora php4 perchè passando al 5 probabilmente dovrei modificare tanto codice.


    Mi hai fatto venire un'idea sopra fa la differenza tra orari e basta, se ci aggiungo anche la data dovrebbe in teoria sistemarsi.

    codice:
    <?php
    $tz= "America/New_York";
    putenv("TZ=$tz");
    $ny = date("H:i:s d/m/Y");
    
    $tz2 = "Europe/Rome";
    putenv("TZ=$tz2");
    $ita = date("H:i:s d/m/Y");
    
    echo $div = $ny - $ita;
    ?>

    In teoria dovrebbe funzionare faccio qualche prova con altri fusi orari per sicurezza.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    nuovo problema se mi trovo questi orari:

    00:07:03 14/08/2012 - 14:07:03 13/08/2012 = -14



    dovrebbe essere +14 non -

    con la funzione abs() elimino i segni ma a me servono.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    codice:
    <?php
    $tz= "Pacific/Auckland";
    putenv("TZ=$tz");
    echo $y = date("H:i:s d m Y") . "
    "; 
    
    $tz2 = "Europe/Rome";
    putenv("TZ=$tz2");
    echo $ita = date("H:i:s d m Y") . "
    "; 
    
    
    if(mktime($ita) > mktime($y)){ 
    echo "italia maggiore";
    }else {
    echo "italia minore";}
    
    echo "
    ita" . mktime($ita) ."
    ";
    echo "y". mktime($y);
    ?>

    provate ad eseguire questo codice non quadra y é maggiore di ita di 14 ore e con mktime invece me lo da inferiore.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    139
    Risolto in questo modo, prendo i due differenti fusi orari $ny e $ita, li converto con strtotime dopodiche trovo la differenza $div, tolgo l'eventuale segno negativo con la funzione abs e riconverto da secondi in ore. Infine controllo che l'ora italiana sia maggiore dell'altra in questo caso il risultato sarà sempre negativo e aggiungo il segno meno, in caso contrario aggiungo il segno +.

    codice:
    <?php
    $tz= "America/New_York";
    putenv("TZ=$tz");
    $ny = date("Y-m-d H:i:s");
    
    $tz2 = "Europe/Rome";
    putenv("TZ=$tz2");
    $ita = date("Y-m-d H:i:s");
    
    $div = strtotime($ny) - strtotime($ita);
    $senza = abs($div);
    $ore = intval($senza / 3600);
    
    if(strtotime($ita) > strtotime($ny)){ 
    echo "-" . $ore;
    }else{
    echo "+" . $ore;}
    ?>

    Se trovate un sistema migliore fatemelo sapere.

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.