Часики - реалтайм.
Доброго!
Камнями не нужно, я махонькая :) Прошу совета, не знаю как решить. Нужно вывести часики (цифровые), на странички, что-бы тикали секунды. Данно: могу средствами php забрать utc с сервера. могу прибавить допустим Москву. Но это вывод - здесь и сейчас! Средствами php не сделать тик-так! Как я понимаю в js то же только таймер-счетчик от начало до конца. Подскажите что-то! Может статейка есть! В js не очень, совсем не очень - прошу без сухих ответов. Спасибо! |
Rise - Реверансе, ЧМОК!
Я, уже секунды перемножаю на мнуты и.т.д :) Поясните что это var t = setTimeout(startTime, 500); Спасибо! У, жава весчь но мне не очень дается. Еще раз Спасибо! |
ой, что-то не понимаю где точка отсчета?
Ну работает же! С браузера? Не пойму. Разжуйте плиз, когда время будет! Спасибо! |
Rise, по каким соображениям обновление времени происходит каждые пол секунды, ведь если время выводится с точностью до секунд, то смысл делать эту проверку в два раза чаще? + плодится новый экзапляр таймаута каждые пол секунды с аналогичным кодом
пример рабочий, но есть второе решение за счет интервала, а не таймаута (неизвестно, почему его не учли) |
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> |
Rise, и как раз по тем же соображениям становится некорректным постоянное объявление таймаута - он же и будет накапливать это смещение (допустим функция работает 15ms, таймаут объявляется в конце функции (твой же пример) с задержкой 500ms - по итогу функция сработает по истечению суммы времени, а т.е. 515ms между срабатываниями).
выходит еще один плюс в сторону эффективности интервала (во-первых экзепляр будет срабатывать ни больше, ни меньше через каждую секунду, не зависимо от того, насколько быстро отработал прошлый вызов (1ms или же 400ms), во-вторых не будет постоянного обяъвления дополнительного клона одной и той же логики) P.S.: и да, рассинхрон хоть и будет, но опять же исключительно с локальным временем компа и то в пределах этой секунды, не стоит забывать. что у юзверя на машине может быть и не фактическое время (например настроеное вручную и без синхронизации с временным сервером)... при осмотре вопроса с этой стороны на рассинхрон даже в 1000ms можно положить большой и крупный |
:write: как по мне, то лучше никогда не использовать setInterval, особенно из-за его способности "накапливать" запуски на фоновой вкладке, и выстреливать их очередью при фокусе.
|
oxana, если цель просто часы, то решений уже достаточно предложено))
а если же цель - изменение контента на стороне клиента в зависимости от текущего времени в определенном часовом поясе, то тут решений еще больше, и они немного сложнее |
рони,
Цитата:
|
VikDuBBer,
сказки возможно устарели, браузеры совершенствуются |
Часовой пояс GMT +3, время: 05:12. |