|
|
|
| Вот такая проблема.Нужны динамически часы,активные. Но вот я смог только написать,время береться с твоего копьютера.То есть если я изменю время на неправильное то и на сайте у пользователя будет ложное.
Мне надо строго фиксированное время таких городов как Владивосток,Москва,Токио,ЛосАнжелис,Нью-йорк,пусан.Не подскажте? | |
|
|
|
|
|
|
|
для: Axis4u
(16.10.2008 в 10:40)
| | Подсказываю: начальное значение времени берёте с сервера. А динамически изменять его можете и на JS. | |
|
|
|
|
|
|
|
для: PAT
(16.10.2008 в 11:20)
| | Так ну с сервера я то возьму его.Например на php.А вот как динамечиски на JS.сильно не имею познания на js.
На php конечно можно вывести всех городов ,но оно же будет фиксированным.=( | |
|
|
|
|
|
|
|
для: Axis4u
(16.10.2008 в 11:32)
| | >сильно не имею познания на js.
Ну и я вот не умею говорить по-японски.
Ни одного слова не знаю.
И поэтому - я даже и НЕ ПЫТАЮСЬ на японском разговаривать.
Почему, блин, вы, не зная JS, пытаетесь его использовать на своих страницах?
Думаете, что он проще японского? :-) | |
|
|
|
|
|
|
|
для: PAT
(16.10.2008 в 12:20)
| | хех) а что делать если PHP работает только на стороне сервера и не имеет возможности как у JAva) поэтому потихоньку пытаюсь набраться опыт в JS. | |
|
|
|
|
|
|
|
для: Axis4u
(16.10.2008 в 13:12)
| | Начало файла должно быть таким:
<html>
<head>
<script>
<?php
$d = gmdate("H:i:s");
$s = "var serverGMTtime = '".$d."';\n";
echo $s;
?>
var NULLstart = parseInt (new Date ().valueOf () / 1000, 10);
</script>
</head>
|
В итоге вы имеете:
serverGMTtime - время по Гринвичу с сервера на момент начала загрузки страницы
NULLstart - некое броузерное число секунд на момент начала загрузки страницы
После того, как страницу полностью загрузите, можете по window.onload запустить некую функцию myFunc1 () на JS, которая:
1. определит - сколько прошло секунд с момента начала загрузки страницы
2. добавит эти определенные в п.1 секунды к начальному серверному гринвичскому времени и получит текущее время по Гринвичу
3. переведёт гринвичское время во время нужных вам временных зон
4. отобразит полученные значения времени в нужных местах вашей страницы
5. запустит таймер (setInterval) на 1 секунду
Через каждую секунду будет запускаться уже другая функция myFunc2 (), которая будет в нужных местах вашей страницы перезаписывать текущее время в разных временных зонах, увеличивая его на 1 секунду.
Разумеется, в обеих функциях необходимо предусмотреть математический аппарат для изменения секунд, минут и часов в случае, когда секунды/минуты/часы переходят через значения 60/60/24. | |
|
|
|
|
|
|
|
для: PAT
(16.10.2008 в 13:33)
| | Что то пробывал сделать не получаеться. Но могли бы вы помочь с полным скриптом? | |
|
|
|
|
|
|
|
для: Axis4u
(27.10.2008 в 07:24)
| |
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=win-1251">
<script>
<?php
$d = gmdate("H:i:s");
$s = "var serverGMTtime = '".$d."';\n";
echo $s;
?>
var NULLstart = parseInt (new Date ().valueOf () / 1000, 10);
function fTZ (r, d, obj_id, tz)
{
var x = new Array ();
x [0] = r [0]; x [1] = r [1]; x [2] = r [2];
x [2] += d; var P = 0; if (x [2] > 59) {x [2] -= 60; P = 1}
x [1] += P; var P = 0; if (x [1] > 59) {x [1] -= 60; P = 1}
x [0] += (P + tz * 1); if (x [0] > 23) x [0] -= 24; else if (x [0] < 0) x [0] = 24 + x [0];
document.getElementById (obj_id).innerHTML = ((x [0] < 10) ? '0' : '') + x [0] + ':' + ((x [1] < 10) ? '0' : '') + x [1] + ':' + ((x [2] < 10) ? '0' : '') + x [2];
}
function fRead (s)
{
var t = s.split (':');
t [0] = ((t [0].charAt (0) == '0') ? t [0].charAt (1) : t [0]) * 1;
t [1] = ((t [1].charAt (0) == '0') ? t [1].charAt (1) : t [1]) * 1;
t [2] = ((t [2].charAt (0) == '0') ? t [2].charAt (1) : t [2]) * 1;
return t;
}
function myFunc2 ()
{
fTZ (fRead (document.getElementById ('vlad1').innerHTML), 1, 'vlad1', 0); //Владивосток + 1сек
fTZ (fRead (document.getElementById ('mos1').innerHTML) , 1, 'mos1' , 0); //Москва + 1сек
fTZ (fRead (document.getElementById ('toc1').innerHTML) , 1, 'toc1' , 0); //Токио + 1сек
fTZ (fRead (document.getElementById ('ny1').innerHTML) , 1, 'ny1' , 0); //Нью-Йорк + 1сек
fTZ (fRead (document.getElementById ('la1').innerHTML) , 1, 'la1' , 0); //Лос-Анжелес + 1сек
}
onload = function ()
{
var Z = fRead (serverGMTtime);
var delta = parseInt (new Date ().valueOf () / 1000, 10) - NULLstart;
fTZ (Z, delta, 'vlad1', 10); //Владивосток старт
fTZ (Z, delta, 'mos1' , 3); //Москва старт
fTZ (Z, delta, 'toc1' , 9); //Токио старт
fTZ (Z, delta, 'ny1' , -4); //Нью-Йорк старт
fTZ (Z, delta, 'la1' , -7); //Лос-Анжелес старт
setInterval (myFunc2, 1000);
}
</script>
</head>
<body>
<table cellpadding="10" cellspacing="0">
<tr><td>Владивосток</td><td id="vlad1"> </td></tr>
<tr><td>Москва</td><td id="mos1"> </td></tr>
<tr><td>Токио</td><td id="toc1"> </td></tr>
<tr><td>Нью-Йорк</td><td id="ny1"> </td></tr>
<tr><td>Лос-Анжелес</td><td id="la1"> </td></tr>
</table>
</body>
</html>
| По-хорошему, конечно, надо регулярно по технологии Ajax сверяться с сервером - ибо браузерный таймер весьма сильно зависит от загрузки процессора (включит юзер параллельно что-то байтозатратное, часы на странице отставать начнут)... Но это уже изыски... и за особую дополнительную плату :-) | |
|
|
|
|
|
|
|
для: PAT
(27.10.2008 в 13:08)
| | Спасибо PAT.Помог и я понял свои ошибки. | |
|
|
|