Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2015, 10:22
Новичок на форуме
Отправить личное сообщение для XCanG Посмотреть профиль Найти все сообщения от XCanG
 
Регистрация: 12.11.2015
Сообщений: 5

Обновление даты и времени без отправки запроса
Добрый день. Интересует такой вопрос:
Сервер работает по принципу шаблона, в шаблоне есть переменная %timestamp% показывающая текущее время на сервере, имеет вид: 12.11.2015 12:09:51 (число.месяц.год час:минута:секунда) и переменная %uptime% показывающая время работы сервера 01:43:59 (час:минута:секунда).

При загрузке страницы они показывают текущее время, но на этом останавливаются. Хотелось бы их обновлять без дополнительных запросов к серверу, я уверен это возможно.

Эти переменные в коде шаблона внёс в специальные span с id:
<div id='serverinfo'>
							{.!Время на сервере.}: <span id="time1">%timestamp%</span><br />
							{.!Время работы.}: <span id="time2">%uptime%</span>
						</div>

Ну и начал писать такой скрипт (пока для %timestamp%), однако дописать не могу. Не знаю как можно распознать строку в дату и вероятно сам код написал неправильно до конца.
var tst, t = new Date;
t= 0;
tst = %timestamp%;
var upd_tst = document.getElementById("time1")
function TimstUpd(){
	t=t+1000;
	tst=tst+t;
	upd_tst.innerHTML = tst;
}
window.setInterval("TimstUpd()",1000);

В случае со второй функцией, если часы превысят 24 часа, то можно просто дальше накручивать в часы (48, 60, 100, 200), а не создавать блок под дни, месяцы...

Подскажет кто со скриптом?
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2015, 10:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

XCanG,
воспользуйтесь поиском
Ответить с цитированием
  #3 (permalink)  
Старый 12.11.2015, 11:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от XCanG
я уверен это возможно
Откуда такая уверенность в синхронизации серверного времени на клиенте?
Ответить с цитированием
  #4 (permalink)  
Старый 12.11.2015, 12:29
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ksa
Откуда такая уверенность в синхронизации серверного времени на клиенте?
А синхронизация и не нужна, а показывать время сервера на клиенте не проблема.
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2015, 13:23
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от laimas
синхронизация и не нужна
Просто так написать "серверное время", а потом показывать что-то похожее?
Ответить с цитированием
  #6 (permalink)  
Старый 12.11.2015, 13:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну почему просто так. Во первых можно оперировать временем UTC, а во вторых на сервере можно узнать часовой пояс его времени и передав его на клиента запустить часы на клиенте по метке скорректированной на разность часовых поясов сервера и клиента, и часы будут тикать по времени сервера.
Ответить с цитированием
  #7 (permalink)  
Старый 12.11.2015, 13:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от laimas
и часы будут тикать по времени сервера
Согласен...
Ответить с цитированием
  #8 (permalink)  
Старый 13.11.2015, 00:07
Новичок на форуме
Отправить личное сообщение для XCanG Посмотреть профиль Найти все сообщения от XCanG
 
Регистрация: 12.11.2015
Сообщений: 5

Сообщение от рони Посмотреть сообщение
XCanG,
воспользуйтесь поиском
Это всё не то, вы видимо не правильно поняли как у меня оно работает. %timestamp% это не числовое значение, как в других тредах, это просто аналогия, переменная, которая содержит в себе текст. Он НЕ преобразуется скриптом или ещё как. В общем нашёл решение на Stackoverflow и подстроил под себя.

Решение скрипта оказалось таким:
<script type="text/javascript">
								var tst = '%timestamp%';
								var upt = '%uptime%';
								var m = tst.match(/\d+/g);
								var n = upt.match(/\d+/g);
								var dat = new Date(m[2],m[1] - 1,m[0],m[3],m[4],m[5]);
								var rat = new Date(m[2],m[1] - 1,m[0],n[0],n[1],n[2]);
								var t = 0;
								var upd_div = document.getElementById("time1");
								var up2_div = document.getElementById("time2");
								function timeupd(){
									t = t + 1000;
									dat.setSeconds(dat.getSeconds() + 1);
									rat.setSeconds(rat.getSeconds() + 1);
									upd_div.innerHTML = ("0" + dat.getDate()).slice(-2) + "." + ("0"+(dat.getMonth()+1)).slice(-2) + "." + dat.getFullYear() + " " + ("0" + dat.getHours()).slice(-2) + ":" + ("0" + dat.getMinutes()).slice(-2) + ":" + ("0" + dat.getSeconds()).slice(-2);
									up2_div.innerHTML = ("0" + rat.getHours()).slice(-2) + ":" + ("0" + rat.getMinutes()).slice(-2) + ":" + ("0" + rat.getSeconds()).slice(-2);
								}
								window.setInterval("timeupd()",1000);
							</script>

Вот как работает:

Последний раз редактировалось XCanG, 13.11.2015 в 00:15. Причина: Добавил изображение
Ответить с цитированием
  #9 (permalink)  
Старый 13.11.2015, 00:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от XCanG
Он НЕ преобразуется скриптом или ещё как.
абалдеть значит ваш скрипт волшебный, если именно это и делает
а строки 8 и 12 зачем?
Ответить с цитированием
  #10 (permalink)  
Старый 13.11.2015, 01:11
Новичок на форуме
Отправить личное сообщение для XCanG Посмотреть профиль Найти все сообщения от XCanG
 
Регистрация: 12.11.2015
Сообщений: 5

Сообщение от рони Посмотреть сообщение
абалдеть значит ваш скрипт волшебный, если именно это и делает
а строки 8 и 12 зачем?
А, остались от старого скрипта. Они тут не нужны, да.
<script type="text/javascript">
								var tst = '%timestamp%';
								var upt = '%uptime%';
								var m = tst.match(/\d+/g);
								var n = upt.match(/\d+/g);
								var dat = new Date(m[2],m[1] - 1,m[0],m[3],m[4],m[5]);
								var rat = new Date(m[2],m[1] - 1,m[0],n[0],n[1],n[2]);
								var upd_div = document.getElementById("time1");
								var up2_div = document.getElementById("time2");
								function timeupd(){
									dat.setSeconds(dat.getSeconds() + 1);
									rat.setSeconds(rat.getSeconds() + 1);
									upd_div.innerHTML = ("0" + dat.getDate()).slice(-2) + "." + ("0"+(dat.getMonth()+1)).slice(-2) + "." + dat.getFullYear() + " " + ("0" + dat.getHours()).slice(-2) + ":" + ("0" + dat.getMinutes()).slice(-2) + ":" + ("0" + dat.getSeconds()).slice(-2);
									up2_div.innerHTML = ("0" + rat.getHours()).slice(-2) + ":" + ("0" + rat.getMinutes()).slice(-2) + ":" + ("0" + rat.getSeconds()).slice(-2);
								}
								window.setInterval("timeupd()",1000);
							</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление без перезагрузки при изменении данных в поле БД Sn9 Общие вопросы Javascript 24 08.05.2015 13:20
Обновление select без перезагрузки страницы Devsanterr Javascript под браузер 1 01.09.2014 09:16
Обновление контента без обновления страницы Braindy AJAX и COMET 5 02.12.2013 19:37
Обновление данных формы без перезагрузки dmus jQuery 0 08.02.2010 17:58