网站上的javascript时钟,两个时区

时间:2015-08-29 18:49:42

标签: javascript

我想在我的网站上有两个时钟:一个是当地时间,另一个是GMT + 1。当我使用代码时,一切都有效,但是当它们在一起时,只有第二个有效。我做错了什么?



<div id="clockbox2" style="height: 100%px; width: 100%; color:#fff">
<script type="text/javascript">
tday=new Array("воскресение","понедельник","вторник","среда","четверг","пятница","суббота");
tmonth=new Array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");

function GetClock(){
var d=new Date();
var nday=d.getDay(),nmonth=d.getMonth(),ndate=d.getDate(),nyear=d.getYear();
if(nyear<1000) nyear+=1900;
var nhour=d.getHours(),nmin=d.getMinutes();
if(nmin<=9) nmin="0"+nmin
document.getElementById('clockbox').innerHTML="<br>"+nhour+":"+nmin+"<br>"+tday[nday]+", "+ndate+" "+tmonth[nmonth]+", "+nyear+" г.";
}

window.onload=function(){
GetClock();
setInterval(GetClock,1000);
}
</script>
</div>
&#13;
&#13;
&#13;

&#13;
&#13;
<div id="clockbox2" style="height: 100%px; width: 100%; color:#fff">
<script type="text/javascript">
tday=new Array("воскресение","понедельник","вторник","среда","четверг","пятница","суббота");
tmonth=new Array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");

function GetClock2(){
var tzOffset = -5;//set this to the number of hours offset from UTC
var d=new Date();
var dx=d.toGMTString();
dx=dx.substr(0,dx.length -3);
d.setTime(Date.parse(dx))
d.setHours(d.getHours()+tzOffset);

var nday=d.getDay(),nmonth=d.getMonth(),ndate=d.getDate(),nyear=d.getYear();
if(nyear<1000) nyear+=1900;
var nhour=d.getHours(),nmin=d.getMinutes();
if(nmin<=9) nmin="0"+nmin
document.getElementById('clockbox2').innerHTML="<br>"+nhour+":"+nmin+"<br>"+tday[nday]+", "+ndate+" "+tmonth[nmonth]+", "+nyear+" г.";
}

window.onload=function(){
GetClock2();
setInterval(GetClock2,1000);
}
</script>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您的代码存在以下问题:

  • 两个_div_元素都具有相同的 id id = clockbox2(这是主要问题)
  • height表示100%px,您需要选择其中一个单位
  • 无需使用calculate the years的任何变通方法,使用getFullYear代替getYear
  • 这不是编程问题,但如果您将字体颜色设置为白色,我们将在SO片段中看不到任何内容:color=#fff:)

关于主要问题,请将其用于第二时区:

d2.setHours(d2.getHours() - 5);

只要是从UTC偏移的小时数。

我在这里留下一个格式正确的片段:

&#13;
&#13;
tday=new Array("воскресение","понедельник","вторник","среда","четверг","пятница","суббота");
tmonth=new Array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");

function GetClock(){

var d1= new Date();
var d2= new Date();
d2.setHours(d2.getHours() - 5);

var nday1=d1.getDay();
var nmonth1=d1.getMonth();
var ndate1=d1.getDate();
var nyear1=d1.getFullYear();
var nhour1=d1.getHours();

var nday2=d2.getDay();
var nmonth2=d2.getMonth();
var ndate2=d2.getDate();
var nyear2=d2.getFullYear();
var nhour2=d2.getHours();


var nmin=d1.getMinutes();
if(nmin<=9)
  nmin="0"+nmin;
  

document.getElementById('clockbox1').innerHTML = "<br>"+nhour1+":"+nmin+"<br>"+tday[nday1]+", "+ndate1+" "+tmonth[nmonth1]+", "+nyear1+" г.";

document.getElementById('clockbox2').innerHTML = "<br>"+nhour2+":"+nmin+"<br>"+tday[nday2]+", "+ndate2+" "+tmonth[nmonth2]+", "+nyear2+" г.";

}

window.onload=function(){

setInterval(GetClock,1000);
}
&#13;
<div id="clockbox1" style="height: 100px; width: 100%; color:#000"></div>
<div id="clockbox2" style="height: 100px; width: 100%; color:#000"></div>
&#13;
&#13;
&#13;

希望它有所帮助!