具有日期和时间偏移的计划项目逻辑

时间:2016-09-11 18:46:18

标签: javascript timezone-offset

我在数据库中有一个" Schedule" 3列的类:

开始(数字) - 广告位(数组) - (数字)

enter image description here

例如,圆圈中的元素引用此行:

开始:1

插槽:[1,2]

天:3

当我必须保存预定项目时,我选择参数并保存:

enter image description here

时间偏移会出现问题。

例如,在这种情况下,我发送本地时间和服务器时间(UTC)之间的分钟差异(-120),以UTC格式保存项目。

然后在星期二(2)而不是星期三(3)保存该项目,这会在前端和代码中管理表中产生许多问题。

我认为以utc格式保存数据是正确的,但在前端我该如何处理(星期二而不是星期三)?

我没有使用Date对象,我错了?

我做了很多测试,例如,这段代码(脏)与当地时间一起工作:

function generateLocalScheduleInfo(day, start, end) {

    var startDate = new Date();

    //Set the date to the next input day (day)
    startDate.setDate(startDate.getDate() + (day + (7 - startDate.getDay())) % 7);
    startDate.setMinutes(0);
    startDate.setSeconds(0);
    startDate.setHours(start);

    var startSlot = startDate.getHours();
    var endSlot = end;
    var slots = [];

    if (startSlot <= endSlot) {

        for (var i = startSlot; i <= endSlot; i++) {
            slots.push(i);
        }

    } else {

        var hoursBeforeMidnight = 24 - startSlot

        var hoursAfterMidnight = endSlot + 1;

        var numberOfHours = hoursBeforeMidnight + hoursAfterMidnight;

        for (var ii = 0; ii < numberOfHours; ii++) {

            if (ii < hoursBeforeMidnight) {

                slots.push(startSlot + ii);

            } else {

                slots.push(ii - hoursBeforeMidnight);

            }
        }
    }

    var dict = {
        "day": startDate.getDay(),
        "startAtHour": startSlot,
        "slots": slots
    };

    return dict;

}

var startSlot = 1;
var endSlot = 2;
var day = 0;

var scheduledInfo = generateLocalScheduleInfo(day, startSlot, endSlot);

console.log(scheduledInfo);

我需要一个更简单的解决方案

由于

0 个答案:

没有答案