Время и дата, обновление в онлайне
Всем привет!
Помогите сделать так, чтобы шло обновление времени каждую секунду, например.
<SCRIPT LANGUAGE="JavaScript">
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds();
var timeValue = "" + ((hours >24) ? hours -24 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
timerRunning = true;
mydate = new Date();
myday = mydate.getDay();
mymonth = mydate.getMonth();
myweekday= mydate.getDate();
weekday= myweekday;
myyear= mydate.getYear();
year = myyear
if (year < 2000)
year = year + 1900;
if(myday == 0)
day = " Воскресенье, "
else if(myday == 1)
day = " Понедельник, "
else if(myday == 2)
day = " Вторник, "
else if(myday == 3)
day = " Среда, "
else if(myday == 4)
day = " Четверг, "
else if(myday == 5)
day = " Пятница, "
else if(myday == 6)
day = " Суббота, "
if(mymonth == 0)
month = "Января "
else if(mymonth ==1)
month = "Февраля "
else if(mymonth ==2)
month = "Марта "
else if(mymonth ==3)
month = "Апреля "
else if(mymonth ==4)
month = "Мая "
else if(mymonth ==5)
month = "Июня "
else if(mymonth ==6)
month = "Июля "
else if(mymonth ==7)
month = "Августа "
else if(mymonth ==8)
month = "Сентября "
else if(mymonth ==9)
month = "октября "
else if(mymonth ==10)
month = "Ноября "
else if(mymonth ==11)
month = "Декабря"
document.write("<P ALIGN=RIGHT><FONT SIZE=1 FACE=ARIAL>" + timeValue + " | " +day + month);
document.write(myweekday+","+ " " + year + "</FONT></p>");
</SCRIPT>
Я пытался текст в теле поместить в функцию а ля function show(){ ... setTimeout("show()",1000) } window.onload=show но не помогло. |
в функции вместо document.write(); используйте document.getElementById().innerHtml = ""; , ну и вешайте на таймер как Вы и сказали.
Получится что то типа:
document.getElementById("time").innerHTML='<span id="time">'+timeValue+' | '+day+myweekday+' '+month+', '+year+'</span>';
Ну и в документ соответственно добавьте <span id="time"></span> P.S. Вместо множественного ветвления в Вашем случае было бы красивее использовать switch ;) |
Пока писал, Zibba уже ответил)))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var datetime = {
month: ['Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря'],
day: ['Воскрсенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
show: function(node) {
var _this = this;
setInterval(function() {
var date = new Date();
node.innerHTML = [_this.day[date.getDay()], ', ', date.getDate(), ' ', _this.month[date.getMonth()], ' ', date.getFullYear()].join('');
}, 1000);
}
};
window.onload = function() {
datetime.show(document.getElementById('date'));
};
</script>
</head>
<body>
<div id="date"></div>
</body>
</html>
Вывод времени не стал делать, думаю сами догадаетесь как сделать. Метод «getFullYear» не работает вроде бы только в старых версиях «Mozilla», которые уже не актуальны, поправьте если ошибаюсь. |
При создании часов нельзя ставить таймаут в одну секунду, т.к. реально он будет больше. В результате секунды будут идти неровно.
|
Спасибо, не знал. А какое тогда оптимаьлное время для одной секунды? Или будет зависеть от кода скрипта?
|
Цитата:
|
1 миллисекунда - это слишком часто... Я ставил 100 - нормально. То есть время таймера - это максимальная погрешность на которую может отклонится отрисовка... Если ты человек-часы и сможешь отличить 0,9 секунды от 1,1 секунды, то ставь погрешность меньше...
Везде принимается за визуальный лаг 300мс, так что +-100 (=200) меньше общепринятого. |
| Часовой пояс GMT +3, время: 03:24. |