2015-11-07 7 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. Заранее спасибо!

редактировать:

это пример того, как я использую время, чтобы показать diffrent знак

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

вот так? функция дисплейState() { localTime = новый Date(); hours = 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: Смотрите мой отредактированный код выше. Это ваш сценарий? Я использовал те же часы для каждого дня. –