Помогите поправить скрипт World Clock

elven

Новичок
Помогите поправить скрипт World Clock

Здравствуйте, помогите пожалуйста поправить скрипт. Нашел в интернете скрипт World Clock.

Очень хорошо, но есть ошибка. У меня не отображается правильно Московское время. После 18.00 до 0.00 по Московскому врмни скрипт вместо , например 19:00:00 пишет 0-5:00:00

Как поправить? Собственных знаний не хватает, бращался в разные форумы, нигде не отвечают, сайт автора не работает, e-mail не отвечает. Помогите ...


PHP:
<html>
<head>
<title>WOweb.ru - Scripts - JavaScript - World Clock</title>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<Style>
  A:Link{ Color: #000000; Text-decoration: underline}
  A:Visited{ Color: #000000; Text-decoration: underline}
  A:Hover{ Color: #000000; Text-decoration: none}
td, body {font-family: verdana, arial, helvetica; font-size:11px;}  
</Style>

<!-- HEAD START HERE -->

<script LANGUAGE="JavaScript">
<!-- Original:  Emanuel Gavrilv ([email protected]) -->
<!-- Web Site:  [url]http://www.angelfire.com/on/eltal[/url] -->

<!-- Begin
function GetTime() { 
var dt = new Date();
var def = dt.getTimezoneOffset()/60;
var gmt = (dt.getHours() + def);
document.clock.local.value = (IfZero(dt.getHours()) + ":" + IfZero(dt.getMinutes()) + ":" + IfZero(dt.getSeconds()));
var ending = ":" + IfZero(dt.getMinutes()) + ":" +  IfZero(dt.getSeconds());
var rome =check24(((gmt + 1) > 24) ? ((gmt + 1) - 24) : (gmt + 1));
document.clock.rome.value = (IfZero(rome) + ending);
var isr =check24(((gmt + 2) > 24) ? ((gmt + 2) - 24) : (gmt + 2));
document.clock.Israel.value = (IfZero(isr) + ending);
var msw =check24(((gmt + 3) > 24) ? ((gmt + 3) - 24) : (gmt + 3));
document.clock.msw.value = (IfZero(msw) + ending);
var baku =check24(((gmt + 4) > 24) ? ((gmt + 4) - 24) : (gmt + 4));
document.clock.baku.value = (IfZero(baku) + ending);
var del =check24(((gmt + 5) > 24) ? ((gmt + 5) - 24) : (gmt + 5));
document.clock.del.value = (IfZero(del) + ending);
var dh =check24(((gmt + 6) > 24) ? ((gmt + 6) - 24) : (gmt + 6));
document.clock.dh.value = (IfZero(dh) + ending);
var kok =check24(((gmt +7 ) > 24) ? ((gmt +7 ) - 24) : (gmt + 7));
document.clock.kok.value = (IfZero(kok) + ending);
var ho =check24(((gmt + 8) > 24) ? ((gmt + 8) - 24) : (gmt + 8));
document.clock.ho.value = (IfZero(ho) + ending);
var tky =check24(((gmt + 9) > 24) ? ((gmt + 9) - 24) : (gmt + 9));
document.clock.tky.value = (IfZero(tky) + ending);
var sdn =check24(((gmt + 10) > 24) ? ((gmt + 10) - 24) : (gmt + 10));
document.clock.sdn.value = (IfZero(sdn) + ending);
var mag =check24(((gmt + 11) > 24) ? ((gmt + 11) - 24) : (gmt + 11));
document.clock.mag.value = (IfZero(mag) + ending);
var wll =check24(((gmt + 12) > 24) ? ((gmt + 12) - 24) : (gmt + 12));
document.clock.wll.value = (IfZero(wll) + ending);

var _GMT =check24(((gmt) > 24) ? ((gmt) - 24) : (gmt));

document.clock._GMT.value = (IfZero(_GMT) + ":" + IfZero(dt.getMinutes()) + ":" + IfZero(dt.getSeconds()));
var eniw =check24(((gmt + (24-12)) > 24) ? ((gmt + (24-12)) - 24) : (gmt + (24-12)));
document.clock.eniw.value = (IfZero(eniw) + ending);
var sam =check24(((gmt + (24-11)) > 24) ? ((gmt + (24-11)) - 24) : (gmt + (24-11)));
document.clock.sam.value = (IfZero(sam) + ending);
var haw =check24(((gmt + (24-10)) > 24) ? ((gmt + (24-10)) - 24) : (gmt + (24-10)));
document.clock.Hawaii.value = (IfZero(haw) + ending);
var ala =check24(((gmt + (24-9)) > 24) ? ((gmt + (24-9)) - 24) : (gmt + (24-9)));
document.clock.alaska.value = (IfZero(ala) + ending);
var pacif =check24(((gmt + (24-8)) >= 24) ? ((gmt + (24-8)) - 24) : (gmt + (24-8)));
document.clock.pacif.value = (IfZero(pacif) + ending);
var mount =check24(((gmt + (24-7)) > 24) ? ((gmt + (24-7)) - 24) : (gmt + (24-7)));
document.clock.mount.value = (IfZero(mount) + ending);
var center =check24(((gmt + (24-6)) > 24) ? ((gmt + (24-6)) - 24) : (gmt + (24-6)));
document.clock.center.value = (IfZero(center) + ending);
var east =check24(((gmt + (24-5)) > 24) ? ((gmt + (24-5)) - 24) : (gmt + (24-5)));
document.clock.east.value = (IfZero(east) + ending);
var atl =check24(((gmt + (24-4)) > 24) ? ((gmt + (24-4)) - 24) : (gmt + (24-4)));
document.clock.atl.value = (IfZero(atl) + ending);
var bra =check24(((gmt + (24-3)) > 24) ? ((gmt + (24-3)) - 24) : (gmt + (24-3)));
bra = (bra >= 24) ? bra - 24 : bra;
document.clock.bra.value = (IfZero(bra) + ending);
var mid =check24(((gmt + (24-2)) > 24) ? ((gmt + (24-2)) - 24) : (gmt + (24-2)));
mid = (mid >= 24) ? mid - 24 : mid;
document.clock.mid.value = (IfZero(mid) + ending);
var azo =check24(((gmt + (24-1)) > 24) ? ((gmt + (24-1)) - 24) : (gmt + (24-1)));
azo = (azo >= 24) ? azo - 24 : azo;
document.clock.azo.value = (IfZero(azo) + ending);
setTimeout("GetTime()", 1000);
}
function IfZero(num) {
return ((num <= 9) ? ("0" + num) : num);
}
function check24(hour) {
return (hour >= 24) ? hour - 24 : hour;
}
//  End -->
</script>

<!-- HEAD END HERE -->




</head>
<body bgcolor="#EDEDED" text="#000000" link="#000000" topmargin="0" leftmargin="0" onLoad="javascript:GetTime();">
<center>

<!-- BODY START HERE -->

<form name="clock">
<strong>Local Time <input type="text" size="8" name="local"></strong>
<p>
Eniwetok (GMT-12)  <input type="text" size="8" name="eniw"><br>
Samoa (GMT-11)  <input type="text" size="8" name="sam"><br>
Hawaii (GMT-10)  <input type="text" size="8" name="Hawaii">
<p>
Alaska (GMT-9)  <input type="text" size="8" name="alaska"><br>
Pacific Time (GMT-8)  <input type="text" size="8" name="pacif"><br>
Mountain Time (GMT-7)  <input type="text" size="8" name="mount">
<p>
Central Time (GMT-6)  <input type="text" size="8" name="center"><br>
Eastern Time (GMT-5)  <input type="text" size="8" name="east"><br>
Atlantic Time (GMT-4)  <input type="text" size="8" name="atl">
<p>
Brazilia (GMT-3)  <input type="text" size="8" name="bra"><br>
Mid-Atlantic (GMT-2)  <input type="text" size="8" name="mid"><br>
Azores (GMT-1)  <input type="text" size="8" name="azo">
<p>
<strong>Greenwich Mean Time (GMT)  <input type="text" size="8" name="_GMT"></strong>
<p>
Rome (GMT +1)  <input type="text" size="8" name="rome"><br>
Israel (GMT +2)  <input type="text" size="8" name="Israel"><br>
Moscow (GMT +3)  <input type="text" size="8" name="msw">
<p>
Baku (GMT +4)  <input type="text" size="8" name="baku"><br>
New Delhi (GMT +5)  <input type="text" size="8" name="del"><br>
Dhakar (GMT +6)  <input type="text" size="8" name="dh">
<p>
Bangkok (GMT +7)  <input type="text" size="8" name="kok"><br>
Hong Kong (GMT +8)  <input type="text" size="8" name="ho"><br>
Tokyo (GMT +9)  <input type="text" size="8" name="tky">
<p>
Sydney (GMT +10)  <input type="text" size="8" name="sdn"><br>
Magadan (GMT +11)  <input type="text" size="8" name="mag"><br>
Wellington (GMT +12)  <input type="text" size="8" name="wll">
</form>

<!-- BODY END HERE -->



</body>
</html>
 

hermit_refined

Отшельник
хм... ну даже если его поправить - всё равно чушь получится. потому как здесь не учитывается - (и тут оно!) - летнее время.
чтобы поиметь адекватные результаты, можно в php скрипте высчитать смещения от gmt на данный момент для нужных городов, подставить в javascript, и... реализовать то же самое, что здесь, только не так кошмарно.

не знаю, зачем вам эта фигня нужна, но ничего сложного здесь нет, и вы вполне можете разобраться во всём сами. что непонятно - можете спросить. или - пойти в раздел "Работа".

P.S. но прежде всего, конечно, - стоит почитать правила форума.
 

elven

Новичок
Я прошу прощения, если я нарушил правила, но это было актом отчаяния. До этого я написал в специализирующихся на javaскриптах форумах, но никто не пожелал помочь.

Я использовал только часть скрипта, и у меня проблема только с отображением времени Москвы, хотелось бы поправить, но не получается (не хватает собстенных знаний).


PHP:
 <SCRIPT LANGUAGE="JavaScript">
 <!-- Original:  Emanuel Gavrilv ([email protected]) -->
 <!-- Web Site:  [url]http://www.angelfire.com/on/eltal[/url] -->
 
 <!-- Begin
 function GetTime() { 
 var dt = new Date();
 var def = dt.getTimezoneOffset()/60;
 var gmt = (dt.getHours() + def);
  var ending = ":" + IfZero(dt.getMinutes()) + ":" +  IfZero(dt.getSeconds());
 var msw =check24(((gmt + 3) > 24) ? ((gmt + 3) - 24) : (gmt + 3));
 document.clock.msw.value = (IfZero(msw) + ending);
 var tky =check24(((gmt + 9) > 24) ? ((gmt + 9) - 24) : (gmt + 9));
 document.clock.tky.value = (IfZero(tky) + ending);
 var sdn =check24(((gmt + 10) > 24) ? ((gmt + 10) - 24) : (gmt + 10));
 document.clock.sdn.value = (IfZero(sdn) + ending); 
 var east =check24(((gmt + (24-5)) > 24) ? ((gmt + (24-5)) - 24) : (gmt + (24-5)));
 document.clock.east.value = (IfZero(east) + ending);
 setTimeout("GetTime()", 1000);
 }
 function IfZero(num) {
 return ((num <=9) ? ("0" + num) : num);
 }
 function check24(hour) {
 return (hour >= 24) ? hour - 24 : hour;
 }
 //  End -->
 </script>
Может тогда просто посоветуете на что обратить внимание? Ошибка в функции check24(hour) ? или в фомуле расчета?

p.s.: мне нужно вывод времени в 4 городах. Использую данный скрипт на новостном портале. Думаю, что средствами php я не добьюсь изменения времени посекундно в режиме реального времени. Поэтому нашел вот этот скрипт, ноон оказался глючным. Может то еще знает какойскрипт, который выводит время подобным образом и с учетом летнего времни?

-~{}~ 06.02.07 11:17:

Никто не может помочь? Эхххх, и тут никто не хочет ... :(
 

dimagolov

Новичок
RTFM.

window.alert ();........ основное средство отладки JavaScript

но все вроде работает и так.
 

elven

Новичок
ну почему тогда скрипт не пишет 19:00:00 а пишет 0-5:00:00
наприер, Московское время после 18.00 отображается неверно. Если бы я разбирался в java я бы не написал тут.

Тут ведь проблема не в языке программирования и а в формулах расчета?
 

hermit_refined

Отшельник
elven
проблема в том, что разбираться сами вы не хотите.
но свято верите в то, что найдётся хотя бы один "добрый" человек, который сделает это за вас, причем - просто так.
с какой стати - непонятно.
 

elven

Новичок
1) Просто я еще верю в людей, готовых помочь "просто так", так как очень часто за "просто так" сам помогаю другим по другим вопросам, в которых разбираюсь. Еще раз убедился, что в центре люди настолько коммерционизировались и все меряют в деньгах.

2) Я столько дней потратил на этот скрипт в попытках разобраться и менял этот код и так и сяк, ничего не получилось. Не буду же я тут приводить все варианты мих правок тут? Самостоятельно я не смг, поэтому и прошу помощи.

hermit_refined, я понадеялся на ваши слова: "что непонятно - можете спросить." Я спросил: "Может тогда просто посоветуете на что обратить внимание? Ошибка в функции check24(hour) ? или в фомуле расчета?"

Зачем тогда так писать, если ответа все равно не дадите?

-~{}~ 06.02.07 17:52:

Можете закрыть топик, так как думаю, что никто не поможет.
 

Линка

Новичок
elven
смотри
function IfZero(num) {
return ((num <=9) ? ("0" + num) : num);
}
если тебе приходит отрицательное число(например -5) то возврашается 0-5
!только для hour !
1.Bоспользуйся parseInt() и получишь нормальное отрицательнео число, а не (0-5)
2. если число меньше нуля вычитай из 24
 
Сверху