2015-11-07 84 views
0

我工作的一个小项目为小型企业的网站,我发现了一个脚本,一个有用的教程。该脚本会显示根据当前的时间,我改变了一些事情的打开或关闭的迹象,但现在它工作得很好,除了一点小东西......更改时区在JavaScript

时间设定他们使用的是错误的。我住在荷兰,这里的时区是UTC + 1。 JavaScript正在使用UTC。

这是

localTime=new Date(); 
utc1Time=new Date(localTime.getTime() + (localTime.getTimezoneOffset() + 120) * 60000); 
hours=utc1Time.getHours(); 
minutes=utc1Time.getMinutes(); 
today=utc1Time.getDay(); 

现在我想知道的代码应该是得到正确的时区代码。 只是你知道,我是Javascript的新手。提前致谢!

编辑:

这是一个例子,我如何使用时间,使显示有多种不同的标志

if (today==6) { 
if (hours>=1&&minutes>=4) { 
    if (hours<=23&&minutes<=30) {document.write(statusopen); 
    } 
    else {document.write(statusclosed); 
    } 
} 
else {document.write(statusclosed); 
} 
} 
+1

使用'localTime.getHours',而不是'utc1Time.getHours'。 – Barmar

+0

你的代码故意切换到UTC。如果你不想要UTC时间,不要这样做。 – Barmar

+0

是这样的? 功能的displayState(){ LOCALTIME =新日期(); 小时= localTime.getHours(); minutes = localTime.getMinutes(); today = localTime.getDay(); –

回答

0

如果你想有一个函数来告诉您当前的时间是否可用小时的范围内,你可以尝试下面的方法。

var hoursOfOperation = [ 
 
    [ [8, 15], [17, 30] ], // Sunday 
 
    [ [8, 15], [17, 30] ], // Monday 
 
    [ [8, 15], [17, 30] ], // Tuesday 
 
    [ [8, 15], [17, 30] ], // Wednesday 
 
    [ [8, 15], [17, 30] ], // Thursday 
 
    [ [8, 15], [17, 30] ], // Friday 
 
    [ [8, 15], [17, 30] ] // Saturday 
 
]; 
 

 
var date = new Date(); 
 
var timezone_EST = -300; 
 
var open = isOpen(hoursOfOperation, date, timezone_EST); 
 

 
document.body.innerHTML = open ? 'OPEN' : 'CLOSED'; 
 

 
function isOpen(hoursOfOperation, date, timezoneOffset) { 
 
    var hasOffset = timezoneOffset !== undefined; 
 
    var hour = hasOffset ? date.getUTCHours() : date.getHours(); 
 
    var minute = hasOffset ? date.getUTCMinutes() : date.getMinutes(); 
 
    var day = hasOffset ? date.getUTCDay() : date.getDay();;  
 
    var offsetHours = hasOffset ? Math.floor(timezoneOffset/60) : 0; 
 
    var offsetMinutes = hasOffset ? timezoneOffset % 60 : 0; 
 
    var incrementHour = 0; 
 
    var incrementDay = 0; 
 

 
    if (offsetMinutes != 0) { 
 
     incrementHour = minute + offsetMinutes > 60 ? 1 : minute + offsetMinutes < 0 ? -1 : 1; 
 
     minute = mod(minute + offsetMinutes, 60); 
 
    } 
 

 
    if (offsetHours != 0) { 
 
     incrementDay = hour + offsetHours > 24 ? 1 : hour + offsetHours < 0 ? -1 : 1; 
 
     hour = mod(hour + offsetHours, 24); 
 
    } 
 

 
    day = mod(day + incrementDay, 7); 
 

 
    console.log(day, hour, minute); 
 

 
    return (function(dayOfWeek) { 
 
     var minTime = dayOfWeek[0]; 
 
     var minHour = minTime[0]; 
 
     var minMinute = minTime[1]; 
 
     
 
     if (hour < minHour) return false; 
 
     if (hour === minHour && minute < minMinute) return false; 
 
     
 
     var maxTime = dayOfWeek[1]; 
 
     var maxHour = maxTime[0]; 
 
     var maxMinute = maxTime[1]; 
 
     
 
     if (hour > maxHour) return false; 
 
     if (hour === maxHour && minute > maxMinute) return false; 
 

 
     return true; 
 
    }(hoursOfOperation[day])) 
 
} 
 

 
function mod(n, m) { 
 
    return ((n % m) + m) % m; 
 
}

+0

@AntonvanElburg:查看我上面编辑的代码。这是你的场景吗?我每天都用同样的时间。 –