Используйте стандартную функцию date
вместе с date_default_timezone_set
.
$timezones = array("Australia/Brisbane", "America/New York", "Europe/London");
foreach ($timezones as $tz) {
date_default_timezone_set($tz);
echo "The time in $tz is: " . date('r');
}
Он обрабатывает все летнее время и все для вас.
Список поддерживаемых часовых поясов вы можете найти здесь: http://www.php.net/manual/en/timezones.php
Редактировать: Реализация JavaScript:
Используйте приведенный выше метод, чтобы заставить PHP выводить все интересующие вас часовые пояса, но используйте date('Z')
, чтобы получить смещение секунд от UTC. Выведите его, используя JSON или что-то еще, чтобы Javascript мог его использовать:
var offsets = {
'Brisbane' : 36000,
'Sydney' : 42000,
'London' : 0
};
Перебрать их все, добавляя и вычитая смещения по мере необходимости.
for (var city in offsets) {
var d = new Date();
d.setTime(d.getTime() + offsets[city] * 1000);
alert('The time in ' + city + ' is ' + d.toUTCString());
}
Поместите вышесказанное в функцию, которая вызывается каждую секунду, используя setInterval
Предупреждение: оно не будет гарантировано точным, поскольку теоретически часовой пояс местоположения может измениться, когда у кого-то открыто окно (они могут находиться на границе летнего времени). Это не очень вероятно, и обновление страницы покажет правильное время, так что это, вероятно, не имеет большого значения.