11.04.2017, 18:35
|
Новичок на форуме
|
|
Регистрация: 23.03.2017
Сообщений: 7
|
|
Часики - реалтайм.
Доброго!
Камнями не нужно, я махонькая
Прошу совета, не знаю как решить.
Нужно вывести часики (цифровые), на странички, что-бы тикали секунды.
Данно: могу средствами php забрать utc с сервера.
могу прибавить допустим Москву.
Но это вывод - здесь и сейчас!
Средствами php не сделать тик-так!
Как я понимаю в js то же только таймер-счетчик от начало до конца.
Подскажите что-то! Может статейка есть!
В js не очень, совсем не очень - прошу без сухих ответов.
Спасибо!
|
|
11.04.2017, 22:48
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
|
|
11.04.2017, 23:45
|
Новичок на форуме
|
|
Регистрация: 23.03.2017
Сообщений: 7
|
|
Rise - Реверансе, ЧМОК!
Я, уже секунды перемножаю на мнуты и.т.д
Поясните что это
var t = setTimeout(startTime, 500);
Спасибо!
У, жава весчь но мне не очень дается.
Еще раз Спасибо!
|
|
12.04.2017, 00:04
|
Новичок на форуме
|
|
Регистрация: 23.03.2017
Сообщений: 7
|
|
ой, что-то не понимаю где точка отсчета?
Ну работает же! С браузера? Не пойму.
Разжуйте плиз, когда время будет!
Спасибо!
|
|
12.04.2017, 03:08
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
oxana, из космоса это время твоего компа. Какой отсчет, откуда, куда и зачем? Пример запили.
|
|
14.04.2017, 07:07
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
oxana, пилишь?)
|
|
14.04.2017, 08:02
|
Новичок на форуме
|
|
Регистрация: 14.04.2017
Сообщений: 5
|
|
Rise, по каким соображениям обновление времени происходит каждые пол секунды, ведь если время выводится с точностью до секунд, то смысл делать эту проверку в два раза чаще? + плодится новый экзапляр таймаута каждые пол секунды с аналогичным кодом
пример рабочий, но есть второе решение за счет интервала, а не таймаута (неизвестно, почему его не учли)
Последний раз редактировалось VikDuBBer, 14.04.2017 в 08:50.
|
|
14.04.2017, 08:34
|
Новичок на форуме
|
|
Регистрация: 14.04.2017
Сообщений: 5
|
|
oxana, немного переделанный вариант от Rise
<!DOCTYPE html>
<html>
<body>
<span id="time">(current time)</span>
<script>
setInterval(function() {
time = new Date();
document.getElementById('time').innerText = time.getHours()+":"+firstNull(time.getMinutes())+":"+firstNull(time.getSeconds());
}, 1000);
function firstNull(time) { return time<10 ? "0"+time : time; }
</script>
</body>
</html>
UPD: экстримально короткая и страшная запись кода))))
<!DOCTYPE html>
<html>
<body>
<span id="time">(time)<script>setInterval(function(){document.getElementById('time').innerText=(t=new Date(),t.getHours()+":"+((m=t.getMinutes())<10?'0'+m:m)+":"+((s=t.getSeconds())<10?'0'+s:s));},1000);</script></span>
</body>
</html>
Последний раз редактировалось VikDuBBer, 14.04.2017 в 11:52.
|
|
14.04.2017, 08:41
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
VikDuBBer, по соображениям времени выполнения функции, например если предположить что минимальное время выполнения функции 1 мс, то через 1000 выполнений накопится смещение на 1000 мс и тд, а также по соображениям производительности:
Цитата:
|
В реальности срабатывания таймера могут быть гораздо реже, чем назначено, например если процессор перегружен, вкладка находится в фоновом режиме, ноутбук работает от батареи или по какой-то иной причине. отсюда
|
|
|
14.04.2017, 09:30
|
Новичок на форуме
|
|
Регистрация: 14.04.2017
Сообщений: 5
|
|
Rise, и как раз по тем же соображениям становится некорректным постоянное объявление таймаута - он же и будет накапливать это смещение (допустим функция работает 15ms, таймаут объявляется в конце функции (твой же пример) с задержкой 500ms - по итогу функция сработает по истечению суммы времени, а т.е. 515ms между срабатываниями).
выходит еще один плюс в сторону эффективности интервала (во-первых экзепляр будет срабатывать ни больше, ни меньше через каждую секунду, не зависимо от того, насколько быстро отработал прошлый вызов (1ms или же 400ms), во-вторых не будет постоянного обяъвления дополнительного клона одной и той же логики)
P.S.: и да, рассинхрон хоть и будет, но опять же исключительно с локальным временем компа и то в пределах этой секунды, не стоит забывать. что у юзверя на машине может быть и не фактическое время (например настроеное вручную и без синхронизации с временным сервером)... при осмотре вопроса с этой стороны на рассинхрон даже в 1000ms можно положить большой и крупный
Последний раз редактировалось VikDuBBer, 14.04.2017 в 09:58.
|
|
|
|