|
Как заставить работать скрипт по серверному времени ?
Здравствуйте
Как заставить эти 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, время: 12:41. |
|