Автоматический переключатель часовых поясов для каждого пользователя - PullRequest
0 голосов
/ 07 марта 2012

Я запускаю скрипт комментария и хочу установить время добавления каждого сообщения.

Хотя оно было опубликовано в 19:21 в Норвегии, оно было размещено в 20:21 где-то еще.Что-то ведьма также делает «время с» бесполезным.

Вы понимаете проблему?

Я в основном ищу способ изменить время на локальную область каждогопользователь.

Может ли кто-нибудь дать мне решение моей проблемы?В настоящее время я использую php, но я мог бы также использовать javascript.

Я видел, как веб-сайт использует этот код: document.write (GetElapsedTime (1330160527));Но опять же, я понятия не имею, как я могу получить каждое значение времени.

Ответы [ 3 ]

0 голосов
/ 07 марта 2012

Есть ли у вас доступ к информации о часовых поясах пользователей?Если вы это сделаете, вы можете сделать это в php, при условии, что вы сохранили опубликованное время в метке времени Unix.Если нет, то вам придется сделать это с помощью JavaScript.

$time = time(); // Current time in unix timestamp
$timezone = new DateTimeZone('Europe/London');  // Desired timezone

$datetime = new DateTime(); 
$datetime->setTimezone($timezone); 
$datetime->setTimestamp($time);
echo $datetime->format('Y-m-d H:i:s');
0 голосов
/ 07 марта 2012

Если вы отправляете метку времени UTC клиенту (т.е. миллисекунды с 00:00 01.01.1970 или 1970-01-01T00: 00: 00.000Z), вы можете преобразовать ее в местное время в javascript, используя:

// Just to get local timezone offset
var tmp = new Date();

// Adjust timestamp to local time and create a local date object
var localTime = new Date(timestamp - tmp.getTimezoneOffset() * 6e4);

Смещение часового пояса javascript возвращается в минутах для добавления к местному времени, чтобы получить UTC, поэтому для часового пояса UTC + 10 это -600.Вы можете вернуть эквивалентную временную метку, изменив операцию:

var tmp = new Date();
var UTCtimestamp = tmp + tmp.getTimezoneOffset() * 6e4 

Конечно, все зависит от того, на каком локальном компьютере установлены часы точно.

0 голосов
/ 07 марта 2012

В Javascript new Date().getTime() возвращает количество миллисекунд с полуночи 1 января 1970 года по местному времени , то есть на основе часового пояса браузера.Чтобы преобразовать его во время сервера, сервер должен отобразить страницу с собственным подсчетом миллисекунд, прошедших с 1 января 1970 года. Вы можете использовать Javascript для преобразования времени браузера в часовой пояс сервера, например:

var serverTime = 1330160527; // Sever's time rendered by PHP
// Calculate time difference, rounding it to nearest half hour.
var timeDifference = Math.round ( (new Date().getTime() - 1330160527) 
         / (30 * 60 * 1000) ) * (30 * 60 * 1000); 

// Later, when we post the time to the server, we adjust by timeDifference
var localTime = (new Date()).setTime(new Date().getTime() - timeDifference);

Обратите внимание, что мы округляем разницу во времени (в миллисекундах) с точностью до получаса, потому что два разных часовых пояса должны быть разнесены как минимум на полчаса, но не на меньшую долю часа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...