Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Как сделать часы, которые идут во время просмотра страницы

#21 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8
0

Отправлено 15 Май 2009 - 22:49

Я чувствую знаю где собака зарыта :P
Ты правильно указал, ведь просто объект Date указывает на текущее время, а нам нужно создать новый объект поэтому используем new

По поводу месяца... Я думаю стоит почитать, как цифрами задаются месяц в PHP как Date("m"). Мне кажется тут значение от 1 до 12. А вот Что сказать про JavaScript, он принимает в качестве месяца от 0 до 11 месяцы. Вроде как так. Стоит почитать всего спецификации двух объектов Date в разных языках.
Вот к примеру тебе спецификация объекта Date() - JavaScript
спецификация функции Date() - PHP
  • 0

#22 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 17 Май 2009 - 20:28

Немного подправленный и дополненный скрипт часов с серверным временем.
Теперь он умеет
* выводить время названиями дня недели и месяца по русски и по англ. (параметр lang), например:
воскресенье, 17 мая 2009, 21:04:08
Sunday, 17 May 2009, 21:04:31
* брать время по php или ssi запросу к серверу (параметр servermode)
<html>
<head>
<script type="text/javascript">
var lang = "ru" // здесь задаем язык часов, возможные варианты "ru"/"en"
var servermode = "php" // здесь выбираем язык запроса времени с сервера, возможные варианты "php"/"ssi"

var eweekdaystxt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
var emonthtxt=["January","February","March","April","May","June","July","August","September","October","November","December"]
var weekdaystxt=["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"]
var monthtxt=["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"]
//берем дату с сервера, формируя запрос в соответствии с параметром servermode
var servertimestring = (servermode=="php")? '<?php print date("F d, Y H:i:s")?>' : '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->'
//Создаём дату сервера и преобразуем её в количество миллисекунд от 1970 года
serverMSeconds = Date.parse(servertimestring);
//Создаём дату клиента и преобразуем её в количество миллисекунд от 1970 года
nowMSeconds = Date.parse(new Date());
delta = serverMSeconds - nowMSeconds; // Переход = Разность в миллисекундах сервера и клиента

function clocks()
{
var nowDate = new Date(); // создаём объект с текущим значением клиентской даты
var time = Date.parse(Date()) + delta; // кол-во миллисекунд клиентской даты + переход
nowDate.setTime(time); // Устанавливаем объекту nowDate время смещённое
var day = nowDate.getDate() // число
var month =nowDate.getMonth() //месяц
var year = nowDate.getYear(); year = (year < 1000) ? 1900+year : year // год
var hours = nowDate.getHours(); hours = (hours < 10) ? "0"+hours : hours // часы
var minutes = nowDate.getMinutes(); minutes = (minutes < 10) ? "0"+minutes : minutes // минуты
var seconds = nowDate.getSeconds(); seconds = (seconds < 10) ? "0"+seconds : seconds // секунды
// день недели и месяц в зависимости от параметра lang
if (lang == "ru") { dayofweek = weekdaystxt[nowDate.getDay()]; monthname = monthtxt[month] }
else { dayofweek = eweekdaystxt[nowDate.getDay()]; monthname = emonthtxt[month] }
// обновляем дату в блоке clocks
document.getElementById("clocks").innerHTML = dayofweek+", "+day+" "+monthname+" "+year+", "+hours + ":" + minutes + ":" + seconds;
}

function enterClocks()
{
clocks();
setInterval(function(){clocks()}, 500); // вызываем каждые полсекунды, для большей точности.
}
</script>
</head>
<body onLoad="enterClocks();">
<span id="clocks"></span>
</body>
</html>


примечание: есть еще вариант с возможностью запрашивать время с сервера через asp, для чего нужно изменить строку
var servertimestring = (servermode=="php")? '<?php print date("F d, Y H:i:s")?>' : '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->'
на
var servertimestring = (servermode=="php")? '<?php print date("F d, Y H:i:s")?>' : (servermode=="ssi")? '<!--#config timefmt="%B %d, %Y %H:%M:%S"--><!--#echo var="DATE_LOCAL" -->' : '<%= Now() %>'
но у меня не было возможности протестить его работоспособность
  • 0

#23 Башмак

Башмак
  • Пользователь
  • 1 сообщений
  • Репутация: 0

Отправлено 09 Февраль 2011 - 18:07

Привет всем. Помогите мне пожалуйста.

Имеется скрипт активных часов
<script type="text/javascript">
var d=document
var NN=d.layers?true:(window.opera&&!d.createComment)?true:false
function showTime(){
 var tmN=new Date()
 var dH=''+tmN.getHours();dH=dH.length<2?'0'+dH:dH
 var dM=''+tmN.getMinutes();dM=dM.length<2?'0'+dM:dM
 var dS=''+tmN.getSeconds();dS=dS.length<2?'0'+dS:dS
 var tmp=dH+':'+dM+':'+dS
 if(NN)d.F.chas.value=tmp;else d.getElementById('tm').innerHTML=tmp
 var t=setTimeout('showTime()',1000)
}
</script><span id="tm"></span><script type="text/javascript">showTime()</script>

Он отображает то время которое установлено у пользователя на компьютере. Возможно ли сделать так что бы он отображал время часового пояса Москвы [GMT +3:00] ?
  • 0

#24 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 10 Февраль 2011 - 10:27

Башмак
Вопрос сформулирован непонятно: откуда скрипт, показывающий локальное время на конкретном компьютере, должен/может взять время по мск?

Для справки: локальное время на компьютере клиента может быть вообще никак не связанным с реальным временем (чтобы в этом убедиться, достаточно залезть в настройки даты/времени вашего компьютера и выставить там произвольное число/месяц/год часы/минуты и жить, например, в прошлом веке по локальным часам).

Возможно вам подойдет скрипт из предыдущего поста, он берет время с сервера, а серверное время — гораздо более определенная величина.
Про серверное время точно известно на сколько оно отличается от Гринвича и оно, как правило, регулярно синхронизируется с серверами времени.
Соответственно, останется добавить к выводимому времени разницу между Гринвичем и МСК.


  • 0


Оформление форума – IPBSkins.ru