|
Как заставить работать скрипт по серверному времени ?
Здравствуйте
Как заставить эти 2 скрипта работать по серверному времени? В JS не селен, если можно ответы писать в более развернутом виде. Заранее спасибо. var delay_popup = 2000; var msg_pop = document.getElementById('msg_pop'); setTimeout("document.getElementById('msg_pop').style.display='block';document.getElementById('msg_pop').className += 'fadeIn';", delay_popup); <div id="msg_pop"> <span class="msg_close" onclick="document.getElementById('msg_pop').style.display='none'; return false;">X</span> <div id="countdown" ></div> <div id="countdown1" ></div> alert(<?php echo time() * 1000 ?> +'\n' + new Date()) var d = [5,4,3,2,1,0,7,6,]; var today = new Date(); var end = new Date(today.getFullYear(),today.getMonth(),today.getDate()+ d[today.getDay()], 15, 00, 00); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; function showRemaining() { var now = new Date(); var distance = end - now; if (distance < 0) { document.getElementById("countdown").innerHTML = "Следующий синхрон через неделю.";; return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); if (hours < 10) hours = '0' + hours; var minutes = Math.floor((distance % _hour) / _minute); if (minutes < 10) minutes = '0' + minutes; var seconds = Math.floor((distance % _minute) / _second); if (seconds < 10) seconds = '0' + seconds; document.getElementById('countdown1').innerHTML = "До начала синхрона осталось. "+ days +" дн. "+ hours +":"+ minutes +":"+ seconds +""; } timer = setInterval(showRemaining, 1000); <div id='relo' style="display: none; position: fixed; background-color: red; border: 1px solid lightblue; width: 250px; padding: 10px;bottom: 100px; right: 56px;border-radius: 12px;text-align: center;"><h2>Игра начинается!!!!<br><br><br> Страница обновится автоматически</h2></div> window.onload = function() { setInterval(function() { var date = new Date(); if (date.getDay()==5 && date.getHours()==15 && date.getMinutes()==00 && date.getSeconds()==03) { setTimeout ("$('#relo').show('drop');", 1000); setTimeout(" location.reload(true)", 5000 ); } },1000); }; |
Получить смещение серверного времени относительно utc и уже на основе этих данных корректировать клиентское время.
Не забудьте, что у клиента тоже есть определенное смещение относительно utc. |
Цитата:
|
ddro3doff, только если вы комментарии к коду добавите или объясните что хотите получить.
|
alert(<?php echo
|
<div id='relo' style="display: none; position: fixed; background-color: red; border: 1px solid lightblue; width: 250px; padding: 10px;bottom: 100px; right: 56px;border-radius: 12px;text-align: center;"><h2>Игра начинается!!!!<br><br><br> Страница обновится автоматически</h2></div> <script> window.onload = function() { setInterval(function() { var date = new Date(); if (date.getDay()==5 && date.getHours()==15 && date.getMinutes()==00 && date.getSeconds()==03)///В указанное время должно показаться div окно с текстом о перезагрузке страницы { setTimeout ("$('#relo').show('drop');", 1000); setTimeout(" location.reload(true)", 5000 ); } },1000); };</script> Смысл такой На сайте в указанное время должно появится окно с текстом о перезагрузке страницы и через 5 секунд страница должна перезагрузиться. Скрипт должен выполнятся 1 раз , только в пятницу и только в указанное время |
Цитата:
<script type="text/javascript"> var delay_popup = 2000; var msg_pop = document.getElementById('msg_pop'); setTimeout("document.getElementById('msg_pop').sty le.display='block';document.getElementById('msg_po p').className += 'fadeIn';", delay_popup); </script> <div id="msg_pop">// скрипт для скрытия див окна <span class="msg_close" onclick="document.getElementById('msg_pop').style. display='none'; return false;">X</span> <div id="countdown" ></div>/// окно с текстом при достижении указанного времени <div id="countdown1" ></div>/// окно с текстом если время еще не пришло <script> var d = [5,4,3,2,1,0,7,6,];/// определяет день недели "Пятница" - конечная дата для счетчика var today = new Date(); var end = new Date(today.getFullYear(),today.getMonth(),today.ge tDate()+ d[today.getDay()], 15, 00, 00);/ Время в которое должен показаться текст var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; function showRemaining() { var now = new Date(); var distance = end - now; if (distance < 0) { document.getElementById("countdown").innerHTML = "Следующий синхрон через неделю.";;/// текст для окна countdown return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); if (hours < 10) hours = '0' + hours; var minutes = Math.floor((distance % _hour) / _minute); if (minutes < 10) minutes = '0' + minutes; var seconds = Math.floor((distance % _minute) / _second); if (seconds < 10) seconds = '0' + seconds; document.getElementById('countdown1').innerHTML = "До начала синхрона осталось. "+ days +" дн. "+ hours +":"+ minutes +":"+ seconds +"";///текст для окна countdown } timer = setInterval(showRemaining, 1000); </script> Отчет времени до события. Когда время события равно времени на сервер должен выводится текст. На сайте каждую пятницу в 19 00 проходит игра. Это напоминалка для пользователей сколько дней и часов осталось до игры. |
Цитата:
|
Цитата:
|
ddro3doff, уясните простую вещь (и хорошо бы для закрепления самому "пощупать" скриптом, что сие означает) - сервер возвращает временную зону западнее UTC как отрицательное число, а восточнее положительные. А клиент эти значения возвращает с противоположным знаком.
Отдавая страницу клиенту отдайте временную зону сервера, и суммируйте с временной зоной клиента: var tZ = <?=date('Z') * 1000?> + (new Date).getTimezoneOffset() * 60 * 1000; Вот на это нужно корректировать создание даты везде в скрипте, и все будет работать по времени сервера, по какому бы часовому поясу он не работал. |
Часовой пояс GMT +3, время: 13:47. |
|