Скрипт на JS . Как исправить... (часы и временная зона)

BaNru

Гуру форума
Регистрация
20 Ноя 2008
Сообщения
162
Реакции
81
PHP:
<span id="timenow"><?php echo (date("H:i:s")); ?></span>
<script type="text/javascript">
var serverdate = new Date("<?php echo (date("r")); ?>")
function padlength(what) {
    var output = (what.toString().length == 1) ? "0" + what : what;
    return output;
}
function displaytime() {
    serverdate.setSeconds(serverdate.getSeconds() + 1);
    var timestring = padlength(serverdate.getHours()) + ":" + padlength(serverdate.getMinutes()) + ":" + padlength(serverdate.getSeconds());
    document.getElementById("timenow").innerHTML = timestring;
}
window.onload = function() {
    setInterval("displaytime()", 1000);
}
</script>

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

Т.е. допустим, на компе MSK +3, и на сервере также,
то в код выведется 02:00:00
А если у пользователя на компе, например, Минск +2
То в код выведется как положено 02:00:00, но скрипт переведет в 01:00:00

Кто знает как это исправить?
 
Спустя хз сколько времени мне все таки подсказали решение проблемы. Ошибка как всегда элементарно простая.
absinthe написал(а):
JavaScript все правильно себя тут ведет. Вы ему передаете дату:
Код:
var serverdate = new Date("<?php echo (date("r")); ?>")
т.е. в формате RFC 2822 с указанием часового пояса, а поскольку объект Date в JS может работать и с локальным временем и с часовыми поясами, то вполне логично, что получив часовой пояс он его "переводит" во время пользователя браузера. Что бы этого избежать попробуйте передать в JS только нужные вам данные - год, месяц, день, часы, минуты, секунды.
brevis написал(а):
Код:
var serverdate = new Date("<?php echo date('d F Y H:i:s'); ?>");
 
Назад
Сверху