2009-12-31 6 views
1

Question 1)
En supposant un utilisateur a un paramètre de fuseau horaire enregistré en tant que « Amérique/New_York » dans ma demande, que je simplement l'utiliser sur une page où je dois montrer l'heure avec décalage horaire et l'heure d'été appliquémeilleure méthode pour PHP Timezones

<?php 
$time_zone = 'America/New_York'; 
date_default_timezone_set($time_zone); 
echo date('D,F j, Y, h:i:s A'); 
?> 

ou devrais-je utiliser quelque chose comme cette approche Lorsque je questionne mes données J'utilise le script PHP suivant

<?PHP 
while($row = mysql_fetch_array($registration)){ 

$dt_obj = new DateTime($row['message_sent_timestamp']." UTC"); 
$dt_obj->setTimezone(new DateTimeZone('America/New_York')); 
echo $formatted_date_long=date_format($dt_obj, 'Y-m-d H:i:s'); } 
?> 
+1

http://stackoverflow.com/questions/1727077/generating-a-drop-down-list-of-timezones-with-php – Xeoncross

Répondre

3

Je préfère formater explicitement les dates en fonction des préférences de l'utilisateur en sortie, plutôt que de définir un fuseau horaire par défaut pour l'ensemble du script en cours d'exécution. Cela facilite le travail avec des dates, disons UTC par défaut, pour des actions telles que l'enregistrement de données ou le calcul des temps écoulés.

Vous pouvez facilement écrire une fonction/méthode de formatage de date qui prend en compte le fuseau horaire de l'utilisateur. Je charge habituellement le fuseau horaire de l'utilisateur une fois, puis à chaque appel de mise en forme de date suivant, j'accède au fuseau horaire mis en cache. Cette méthode rapide m'empêche d'utiliser ou d'enregistrer par inadvertance des données dans le mauvais format de fuseau horaire.

+0

oui c'est comme ça que je le fais – JasonDavis

Questions connexes