2011-02-04 5 views
4

J'essaie de comprendre comment afficher l'heure en PST sur mon site php. Je suis mettais dans horodatages dans la base de données MySQL avec NOW() et les appeler comme ceci:Fuseaux horaires en PHP, date, MySQL ...?

Date

("m/d/YG: ia", strtotime (ref $ [ 'LastUpdated']))

Cependant, l'heure du serveur est dans Central et cependant, car le site Web est orienté vers les personnes dans le fuseau horaire PST. Fondamentalement, il doit montrer dans PST. Y a-t-il un moyen de faire cela - comme prendre cette valeur et soustraire 2 ou quelque chose? Des idées?

Je ne suis pas sûr si je dois aller à propos de la route PHP ou si le problème pourrait plutôt être résolu via MySQL.

Toutes les idées sont appréciées - merci!

$query = "SELECT refid, CONCAT(fname,' ',lname) refname, email, street, city, state, zip, interestlvl, status, added, lastupdated FROM referrals WHERE affid='$affid' ORDER BY added DESC;"; 

$result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$Query<BR>\n"); 


    if ($result) { 
      while ($ref = mysql_fetch_array($result, MYSQL_ASSOC))  { 
       echo ' 


    <td bgcolor="#EFEFEF" class="list">'. 
     date_default_timezone_set('America/Chicago'); 
     $date = new DateTime($ref['lastupdated']); 
     $date->setTimezone(new DateTimeZone('America/Los_Angeles')); 
     $date->format('m/d/y g:i a') 
     .'</td>'; 
    } 
    } 

Répondre

3
$date = new DateTime($ref['lastupdated']); 
$date->setTimezone(new DateTimeZone('America/Los_Angeles')); 
echo $date->format('m/d/y g:i a'); 

étant donné que PST est Amérique/Los Angeles. Vous devez vous assurer que date.timezone est réglé sur le fuseau horaire correct pour Central. Cela peut être accompli via le php.ini ou via date_default_timezone_set().

Le code traite alors votre chaîne entrante $ref['lastupdated'] comme dans le fuseau horaire par défaut (Central) et convertit la date-heure dans le * Amérique/Los_Angeles * fuseau horaire.

+0

Cela fonctionne très bien, mais parfois je reçois la valeur retournée comme ceci: 102/04/11 11:56 am. Il y a un "1" étrange venant de nulle part. J'ai vérifié que ce n'est pas dans le HTML. Une idée? Je vous remercie! – Sara

+0

Serait intéressant quelle chaîne d'entrée provoque la sortie étrange ... –

+0

2011-02-04 13:56:44 est la valeur de MySQL. Ensuite, je reçois 102/04/11 11:56 du code. : O Même si je le change pour aimer, M/j/y je reçois 1Feb/04/11 – Sara

Questions connexes