在javascript中更改时区

时间:2015-11-07 00:41:09

标签: javascript time timezone timezone-offset gettime

我正在为一个小型企业网站开展一个小项目,我找到了一个有用的脚本教程。脚本将显示一个打开或关闭的标志,具体取决于我改变了几件事的当前时间,但现在它的工作正常,除了一件小事......

他们使用的时间设置是错误的。我住在荷兰,这里的时区是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 个答案:

答案 0 :(得分: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;
}