Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.11.2016, 08:58
Интересующийся
Отправить личное сообщение для Vadya Посмотреть профиль Найти все сообщения от Vadya
 
Регистрация: 15.04.2010
Сообщений: 24

Привязать таймер к серверному времени
Помогите адаптировать таймер под работу с серверным временем.
Надо вычислить разницу во времени между сервером и клиентом и с учетом ее корректировать вывод скрипта.


function get_timer_223(string_223) {
var date_new_223 = string_223; 
var date_t_223 = new Date(date_new_223);

var date_223 = new Date();

var timer_223 = date_t_223 - date_223;
if(date_t_223 > date_223) {
var day_223 = parseInt(timer_223/(60*60*1000*24));
if(day_223 < 10) {
day_223 = "" + day_223;}
day_223 = day_223.toString();
var hour_223 = parseInt(timer_223/(60*60*1000))%24;
if(hour_223 < 10) {hour_223 = "0" + hour_223;}
hour_223 = hour_223.toString();
var min_223 = parseInt(timer_223/(1000*60))%60;
if(min_223 < 10) {min_223 = "0" + min_223;}
min_223 = min_223.toString();
var sec_223 = parseInt(timer_223/1000)%60;
if(sec_223 < 10) {sec_223 = "0" + sec_223;}
sec_223 = sec_223.toString(); 
timethis_223 = day_223 + " : " + hour_223 + " : " + min_223 + " : " + sec_223;
$(".timerhello_223 div.result3 .result-day3").text(day_223);
$(".timerhello_223 div.result3 .result-hour3").text(hour_223);
$(".timerhello_223 div.result3 .result-minute3").text(min_223);
$(".timerhello_223 div.result3 .result-second3").text(sec_223);
}else {
$(".timerhello_223 div.result3 .result-day3").text("00");
$(".timerhello_223 div.result3 .result-hour3").text("00");
$(".timerhello_223 div.result3 .result-minute3").text("00");
$(".timerhello_223 div.result3 .result-second3").text("00");} }

function getfrominputs_223(){
string_223 = "<?php echo date("m/d/Y"); ?> 23:59:59"; get_timer_223(string_223);
setInterval(function(){get_timer_223(string_223);},1000);}
$(document).ready(function(){ getfrominputs_223();});
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2016, 09:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Vadya,
какая разница сколько времени у клиента, если вам нужно завести таймер на какой-то срок, этот период и посылайте клиенту а не дату окончания.
и на клиенте дата окончания будет new Date() + ваш срок умноженный возможно на 1000, если срок в секундах.
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2016, 13:34
Интересующийся
Отправить личное сообщение для Vadya Посмотреть профиль Найти все сообщения от Vadya
 
Регистрация: 15.04.2010
Сообщений: 24

рони,
Спасибо за альтернативный путь, но не могу на js реализовать

Выручайте, на форумы только в крайнем случае от безисходности обращаюсь.

Cчитаю разницу в миллисекундах между сервером и клиентом:
var difference = <?php echo time(); ?> * 1000 - new Date();
Но привести в формат 'm/d/Y H:i:s' не могу

Представляю как-то так: date('m/d/Y H:i:s', time() + $difference/1000), но на js

Последний раз редактировалось Vadya, 06.11.2016 в 13:40.
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2016, 14:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Vadya,
с php не помогу
Ответить с цитированием
  #5 (permalink)  
Старый 06.11.2016, 14:40
Интересующийся
Отправить личное сообщение для Vadya Посмотреть профиль Найти все сообщения от Vadya
 
Регистрация: 15.04.2010
Сообщений: 24

Получается что у меня сейчас все упирается только в чистый js, много лишнего в прошлом посте написал.

Кто коротает свободное время, помогайте. Задача перевести количество секунд в формат: месяц/день/год часы:минуты:секунды
Ответить с цитированием
  #6 (permalink)  
Старый 06.11.2016, 16:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Vadya
Представляю как-то так: date('m/d/Y H:i:s', time() + $difference/1000)
Не правильно представляете - пока откроется соединение, а оно не обязательно может открыться мгновенно, пока сервер ответит, клиент получит и переварит, то дата отправленная сервером будет иметь уже иное значение.

Если клиентский скрипт должен оперировать по времени сервера, то более точным время сервера на клиенте будет как время клиента плюс/минус разность часовых поясов сервера и клиента.
Ответить с цитированием
  #7 (permalink)  
Старый 07.11.2016, 03:03
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Vadya,
Типично для этого в хидере выдают скрипт переменную отправки сервером страницы в абсолютном времени и на юзере скрипт проверяет разницу между своим таймером в абсолютном времени и таймером отдачи, скрипт естественно должен стоять в хидере
<script type="text/javascript">
var RequestTime = 1478474789; //Время отдачи
</script>
<script type="text/javascript">
var Delta = +new Date()/1000 - RequestTime;
</script>

Последний раз редактировалось Deff, 07.11.2016 в 03:07.
Ответить с цитированием
  #8 (permalink)  
Старый 07.11.2016, 03:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Deff, время 1478474789 сервера, это иное время на клиенте, и их разность без учета смещения клиента, это билиберда. А абсолютное время по определению Ньютона, это "само по себе и по самой своей сущности, без всякого отношения к чему-либо внешнему".
Ответить с цитированием
  #9 (permalink)  
Старый 07.11.2016, 03:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Vadya Посмотреть сообщение
Получается что у меня сейчас все упирается только в чистый js, много лишнего в прошлом посте написал.

Кто коротает свободное время, помогайте. Задача перевести количество секунд в формат: месяц/день/год часы:минуты:секунды
Кроме ИE:
var sek = 1478474789;
var a = new Date(sek*1000).toString().split(' ').slice(1, 5).join('/');
alert(a)

Последний раз редактировалось Deff, 07.11.2016 в 03:26.
Ответить с цитированием
  #10 (permalink)  
Старый 07.11.2016, 03:39
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

laimas,
Смещение ты могёшь взять из рапарса
alert(new Date().toString().split(' ').slice(5))

Время сервера выдаётся абсолютное! GMT+0
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета времени. Зацикленный stanislav_lisitsin Элементы интерфейса 0 17.03.2015 00:23
Обновляемый таймер на javascript smillyhamster Общие вопросы Javascript 1 31.12.2013 10:30
Таймер обратного отчёта с выполнение по времени xakerd Элементы интерфейса 1 20.03.2013 00:10
Таймер отсчета времени с кнопками denisich84 Работа 10 16.02.2012 16:25
LiveTimer - Живой таймер обновлялка времени "Обновлено: около минуты назад". fiw Общие вопросы Javascript 8 25.10.2011 01:56