Как определить смещение UTC от часового пояса сервера? - PullRequest
2 голосов
/ 05 декабря 2009

Я нашел много примеров таблиц UTC и методов php date, чтобы преобразовать их, но я все еще скучаю по простому способу после получения даты сервера - преобразовать ее в выбор часового пояса пользователя на моей веб-странице.

На этой странице http://vkham.com/UTC.html Я нашел четкое руководство, чтобы понять диапазон, но я не знаю, как соединить, например, "Европа / Рим" на столе, поэтому есть что-то более ясное об этом?

Я знаю часовой пояс моего сервера (Америка / Чикаго), но я все еще не знаю, как изменить его с UTC на другой часовой пояс, выбранный на пользовательском компьютере (например, «Европа / Рим»)

Я что-то пробовал, но я что-то пропущу, и я не знаю, что это:

<?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";
?>

Не существует способа перевести Европу / Рим в -13 для часового пояса UTC?
-13 похож на Европу / Рим во всех случаях или только потому, что мой сервер - Америка / Чикаго?

1 Ответ

3 голосов
/ 05 декабря 2009

Вы можете использовать gmdate, чтобы сгенерировать дату, которая отображает время UTC - независимо от того, в каком часовом поясе работает ваш сервер. Затем вы можете просто добавить разницу часовых поясов как hours * 3600 к отметке времени, которую вы используете. используйте для генерации даты, чтобы получить время пользователя.

Другим способом было бы установить местное время, временное для часового пояса пользователя, используя date_default_timezone_set.

Простым примером для первой идеи будет следующий:

<?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 );
?>
...