0

API から営業時間を取得して解析するスクリプトに取り組んでいます。通常の営業時間を使用して次の 7 日間のオブジェクトを作成し、休日の営業時間のリストと比較します。

これらの 7 日間のいずれかに休日が発生した場合、営業時間はこのデータで上書きされます。

    // get regular hours
    var next7days = [];
    var storeday = new Date(2012, 12-1, 5);
    for (var i = 0; i < 7; i++) {
        var dayofweek = (storeday.getDay() + 6) % 7;
        next7days[i] = data.hours.regular_hours[dayofweek];
        next7days[i].date = storeday;
        storeday = new Date(storeday.getTime() + 86400000);
    }

    // get holiday hours
    for (var i = 0; i < data.hours.holiday_hours.length; i++) {

        // this spits out all holidays fine
        console.log('holiday:');
        console.log(data.hours.holiday_hours[i]);

        for (var j = 0; j < 7; j++) {
            var fixdate = next7days[j].date.getFullYear() + '-' + (next7days[j].date.getMonth() + 1) + '-' + (next7days[j].date.getDate());
            if (fixdate == data.hours.holiday_hours[i].date) {
                next7days[j].open_time = data.hours.holiday_hours[i].open_time;
                next7days[j].close_time = data.hours.holiday_hours[i].close_time;
                next7days[j].day_name = data.hours.holiday_hours[i].day_name;
                next7days[j].type = data.hours.holiday_hours[i].type;

                // the first seven holidays are NOT successful
                console.log('successful:');
                console.log(next7days[j]);
            }
        }
    }

これは見事に機能しますが、最初の 7 つの休日の日付には当てはまりません。スクリプトは問題なく情報を取り込みますが (console.log を参照)、休日と通常の比較を実行していないか、日付が一致していることを認識していません。

参考までに、最初の休日の日付は 12 月 3 日から 12 月 9 日ですが、これらは私の休日時間の比較では無視されているようです。12 月 10 日以降はすべて正常に動作しているようです。

誰でも理由がわかりますか?前もって感謝します

4

1 に答える 1

5

最初のいくつかの日付は、休日の日付の先頭の 0 がないため機能しません。次に、日付の等価性が機能するため、2桁で機能します。

于 2012-11-23T21:10:49.267 に答える