0

私は中小企業の Web サイトの小さなプロジェクトに取り組んでおり、スクリプトの役立つチュートリアルを見つけました。スクリプトは、現在の時間に応じてオープンまたはクローズのサインを表示します。いくつかのことを変更しましたが、1 つの小さなことを除いて、問題なく動作しています...

彼らが使用する時間設定は間違っています。私はオランダに住んでおり、ここのタイムゾーンは 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);
}
} 
4

1 に答える 1

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;
}

于 2015-11-07T01:18:55.007 に答える