2011-10-30 32 views
2

我想添加一个时钟到我的网站,显示中央时区的时间。我已经包含了迄今为止的代码。我想用它来告诉用户何时我的网站上的其他工具将处于活动状态(它们在中央时区晚上不活动)。有谁知道如何(1)锁定这个中央时间;和(2)也许从晚上8点开始变成红色。 - 上午7:30(表示工具已关闭)?我想创建一个特定时区的JavaScript时钟

<script type="text/javascript"> 

function GetClock(){ 
d = new Date(); 
nhour = d.getHours(); 
nmin = d.getMinutes(); 
    if(nhour == 0) {ap = " AM";nhour = 12;} 
else if(nhour <= 11) {ap = " AM";} 
else if(nhour == 12) {ap = " PM";} 
else if(nhour >= 13) {ap = " PM";nhour -= 12;} 

if(nmin <= 9) {nmin = "0" +nmin;} 

document.getElementById('clockbox').innerHTML=""+nhour+":"+nmin+ap+""; 
setTimeout("GetClock()", 1000); 
} 
window.onload=GetClock; 
</script> 
<div id="clockbox"></div> 

回答

5

如果您创建一个本地约会对象时,它会在本地系统(在任何可能被设置为,这可能不是实际的本地时区)的时区。日期对象有一个getTimezoneOffset方法返回一个以分钟为单位的数字,如果将其添加到本地日期对象,则将其设置为UTC(本质上是GMT)。然后,您可以减去“中心时间”的偏移量(无论可能如何)以获得该时区的时间。

然后,您可以在该区域中使用该日期对象作为时间。

如果时区为美国中部时区,则标准偏移量为-6小时,夏令时偏移量为-5小时。返回具有特定偏移量的日期对象的函数是:

/* Create a date object with the desired offset. 
    Offset is the time that must be added to local time to get 
    UTC, so if time zone is -6hrs, offset is +360. If time zone 
    is +10hrs, offset is -600. 
*/ 
function getOffsetDate(offsetInMintues) { 
    // Get local date object 
    var d = new Date(); 
    // Add local time zone offset to get UTC and 
    // Subtract offset to get desired zone 
    d.setMinutes(d.getMinutes() + d.getTimezoneOffset() - offsetInMintues); 
    return d; 
} 

给它适当的偏移量,它将返回一个具有该偏移量的日期对象。让我们标准的中央时间:

var centralDate = getOffsetDate(360); 

对于美国中部夏令时:

var centralDSTDate = getOffsetDate(300); 

要做到具体时间之间的东西,你可以这样做:

var h = centralDate.getHours(); 
var m = centralDate.getMinutes(); 
if (h >= 20 || 
    h <7 || 
    (h == 7 && m <= 30) { 
    // the time is between 20:00 and 07:30 the following day. 
} 
2

的日期对象可以修改为您喜欢的任何值,并且会自动更正。 “windTheClock(2);”将时区偏移设置为+2 UTC。

<script type="text/javascript"> 

function addLeadingZero(n) { 
    if (n < 10) { 
     n = "0" + n; 
    } 
    return n; 
} 

function windTheClock(timeZoneOffset) 
{ 
    var d = new Date(); 
    d.setHours(d.getUTCHours() + timeZoneOffset); // set time zone offset 
    var h = d.getHours(); 
    var m = d.getMinutes(); 
    var s = d.getSeconds(); 
    h = addLeadingZero(h); 
    m = addLeadingZero(m); 
    s = addLeadingZero(s); 
    document.all["clock"].innerHTML = h + ":" + m + ":" + s; 
    setTimeout(function(){ windTheClock(timeZoneOffset) }, 1000); 
} 

window.onload = function() { 
    windTheClock(2); 
} 

</script> 

<div id="clock"></div> 
相关问题