|
|
|
| Доброго времени суток
Есть Java Script, который синхронизирует время с серверным и выводит на сайте
<script type="text/javascript">
var dateobj = new Date ();
var servertime = <?php echo mktime()*1000; ?>;
var clienttime = dateobj.getTime();
raznica = servertime - clienttime ;
function timer() {
var dateobj = new Date ();
var correct = dateobj.getTime() + raznica;
dateobj.setTime(correct);
document.getElementById("time_one").innerHTML = dateobj.toLocaleTimeString();
setTimeout("timer("+raznica+")", 1000);
}
timer();
</script>
<body onLoad="timer();"></body>
|
Так вот, при смене времени у клиента, часы на сайте буквально на пару секунд становтяся такие же, как у клиента. Но потом снова синхронизируются с серверным временем.
А если клиент поменяет часовой пояс, то часы собьются. Как исправить? | |
|
|
|
|
|
|
|
для: chexov
(09.02.2012 в 02:47)
| | Надо по таймеру раз в десять секунд (раз в минуту, раз в пять минут, раз в десять минуту... - выбор за вами) запрашивать у вашего специального PHP-файла информацию о текущем серверном времени по технологии AJAX и на странице принудительно синхронизировать клиентское время с полученным серверным. | |
|
|
|
|
|
|
|
для: АЯС
(09.02.2012 в 09:28)
| | А зачем у php скрипта? у меня это все на обычной html странице, запрос серверного времени происходит в самом java script. Что нужно добавить в мой скрипт (в любой другой) чтобы время на сайте не менялось от смены часового пояса, и времени клиента? | |
|
|
|
|
|
|
|
для: chexov
(09.02.2012 в 14:49)
| | Если пользователь зайдет на страничку, изменит часовой пояс и перезагрузит страничку все же будет нормально? Почему? Потому что серверное время обновилось! Что бы получать серверное время постоянно, надо "спросить" его у сервера при помощи AJAX как вам и сказали. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(09.02.2012 в 15:32)
| | где то видела такой скрипт, поищу | |
|
|
|
|
|
|
|
для: selma
(10.02.2012 в 02:12)
| | Форумчане, выручите плиз, не могу ничего поделать с этими часовыми поясами | |
|
|
|
|
автор: ..... (13.02.2012 в 07:13) |
|
|
для: chexov
(13.02.2012 в 03:18)
| | Типа хотите записывать cookie каждые например 10 секунд и проверять на сколько за 10 секунд изменилось время на компьютере ? | |
|
|
|
|
|
|
|
для: .....
(13.02.2012 в 07:13)
| | кукисы не годятся | |
|
|
|
|
|
|
|
для: chexov
(13.02.2012 в 07:46)
| | Положим:
-- юзер в реальное время 04:00:00 по Гринвичу зашёл на ваш сайт
-- в момент захода часы на компе у юзера показывали 08:05:00 (у него выставлено МСК, да и ошибся он на 5 минут, время выставляя)
-- ваш сервер в этот же момент выдал юзеру серверное время 04:00:05 (тоже немного грешат часы)
-- юзер в любой момент при нахождении на вашей странице может изменить как часовой пояс так и время на своём компе.
Объяснитесь подробнее - ЧТО ИМЕННО вам хочется сделать при помощи скрипта. | |
|
|
|
|
|
|
|
для: ЯСА
(13.02.2012 в 09:35)
| | Нужно чтобы юзер всегда видел идущие часы, показывающее время моего сервера. (и без разницы на сколько минут они грешат на сервере) | |
|
|
|
|
|
|
|
для: chexov
(13.02.2012 в 10:34)
| | Т.е. вам надо, чтобы страница показывала 04:00:05 в момент захода клиента на страницу... а через 12 минут нахождения клиента на странице показывала 04:12:05?
Тогда зачем вам вообще объект Date ()?
Вначале тупо прописываете время сервера, затем по setTImeout ежесекундно добавляете по одной секунде.
Объект Date () можно использовать лишь для того, чтобы учесть стартовую разницу между серверным временем и временем полной загрузки страницы в браузер.
В общем, такую задачу я здесь уже решал - см. http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=58956#post345902 (правда, тогда я был под другим никнеймом).
Уберите там Владивосток, Москву, Токио, Нью-Йорк и Лос-Анджелес и пропишите одно единственное серверное время - а функции все оставьте.
PS. Интересно, 3,5 года назад я "Лос-Анжелис" от топикстартера исправил...
но не до конца - на "Лос-Анжелес"...
И только сегодня окончательно исправляю на "Лос-Анджелес" :-(( | |
|
|
|
|
|
|
|
для: ЯСА
(13.02.2012 в 11:05)
| | сэнк ю вери матч | |
|
|
|