2015-11-07 82 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:查看我上面編輯的代碼。這是你的場景嗎?我每天都用同樣的時間。 –