Ответ 1
Если вы (и ваш сайт) удобны с javascript, есть очень простой способ сделать это.
Во-первых, на стороне сервера у вас будет дата/время UTC, отформатированное в формате RFC 3339 (стандарт для интернет-времени, используемый, среди других протоколов, icalendar). Основной синтаксис RFC 3339:
YYYY-MM-DDTHH:MM:SS
Так, что, где я, время будет:
2010-05-04T05:52:33
Но когда время не локальное, а UTC, вы добавляете Z
в конец, чтобы обозначить это. Так что в моем случае, так как я нахожусь в -0500 часов по Гринвичу, то же самое время было бы:
2010-05-04T10:52:33Z
Итак, сначала вы получите сервер для вывода вышеперечисленного на ваш веб-сайт javascript. Затем javascript может проанализировать эту метку времени, и она выведет дату и время, настроенные на часовой пояс браузера (который определяется компьютером, на котором размещен браузер). Вы должны помнить, что если пользователь из Токио и просматривает ваш сайт в Испании, он увидит метку времени в Токио, если они не отрегулировали свои компьютерные часы.
Итак, javascript будет:
var time_string_utc = some_server_variable; // timestamp from server
var time_string_utc_epoch = Date.parse(time_string_utc);
var time_utc = new Date();
time_utc.setTime(time_string_utc_epoch);
В этот момент у вас есть объект даты javascript, установленный на метку времени UTC. Быстрое объяснение того, что происходит выше:
Первая переменная предполагает, что вы передали строку timestamp этой переменной с сервера.
Вторая переменная использует метод Date.parse()
для преобразования строки в метку времени.
Третья переменная создает объект Unset Date.
В последней строке используется метод setTime
, который устанавливает объект Date из временной метки эпохи.
Теперь, когда у вас есть объект, вы можете вывести его пользователю, как сочтете нужным. В качестве простого эксперимента вы можете использовать:
document.write(time_utc);
который, если вы находитесь в моем часовом поясе, используя временную метку UTC, я начал с:
2010-05-04T10:52:33Z
даст:
Tue May 04 2010 05:52:33 GMT-0500 (CST)
но вы можете использовать различные методы javascript для форматирования времени во что-то более приятное.
Не нужно угадывать страну пользователя или даже настраивать метку времени, если вы доверяете часовому поясу локального браузера/компьютера пользователя.
Опять же, короткая версия:
var time_string_utc = some_server_variable; // UTC time from server
var time_string_utc_epoch = Date.parse(some_server_variable);
var time_utc = new Date();
time_utc.setTime(time_string_utc_epoch);
document.write(time_utc);