2009-12-05 8 views
2

J'ai trouvé beaucoup d'exemples sur les tables UTC et les méthodes php date pour le convertir, mais il me manque toujours un moyen simple après la date du serveur de le convertir en une sélection de fuseau horaire sur ma page web. J'ai trouvé un guide clair pour comprendre la gamme, mais je ne sais pas comment connecter par exemple "Europe/Rome" sur la table, donc il y a quelque chose de plus clair à ce sujet? Je connais le fuseau horaire de mon serveur (America/Chicago) mais je ne sais toujours pas comment le changer de la méthode UTC à un fuseau horaire différent de celui de l'utilisateur (par exemple "Europe/Rome")Comment déterminer le décalage UTC à partir du fuseau horaire du serveur?

Je tryied quelque chose, mais I'still raté quelque chose, et je ne sais pas ce qui est-il:

<?php 
$timezone = date ("e"); 
$date = date ('Y-m-d H:i:s'); 
print $date." - this is my server date, and his timezone is - $timezone<br/>"; 

$user_timezone = "Europe/Rome"; // there is a way to convert Europe/Rome to UTC -13? 
$selected_timezone = "-13"; // is -13 like Europe/Rome in all cases or only because my server is America/Chicago? 
$date_user = date ("Y-m-d H:i:s $selected_timezone"); 
$str_date_user = strtotime ($date_user); 
$new_user_date = date ('Y-m-d H:i:s', $str_date_user); 
print $new_user_date . " - this is my server date, and his timezone is - $user_timezone"; 
?> 

N'existe pas un moyen de convertir l'Europe/Rome -13 pour fuseau horaire UTC?
Est-13 comme Europe/Rome dans tous les cas ou seulement parce que mon serveur est America/Chicago?

+0

Vous devez utiliser une combinaison de PHP (obtenir des données de temps serveurs) et JS (obtenez des données de temps utilisateurs) –

Répondre

3

Vous pouvez utiliser gmdate pour générer une date qui affiche l'heure UTC -. Quel que soit fuseau horaire de votre serveur fonctionne en Ensuite, vous pouvez simplement ajouter la différence de fuseau horaire que hours * 3600 à l'horodatage que vous utilisez pour générer la date pour obtenir l'utilisateur de temps.

Une méthode différente consisterait à définir l'heure locale temporairement sur le fuseau horaire de l'utilisateur en utilisant date_default_timezone_set.

Un exemple simple pour la première idée serait la suivante:

<?php 
$offset = -13 * 3600; // timezone offset for UTC-13 
$utcTime = gmdate('d.m.Y H:i'); 
$userTime = gmdate('d.m.Y H:i', time() + $offset); 
?> 
Questions connexes