我在数据库中有一个" Schedule" 3列的类:
开始(数字) - 广告位(数组) - 天(数字)
例如,圆圈中的元素引用此行:
开始:1
插槽:[1,2]
天:3
当我必须保存预定项目时,我选择参数并保存:
时间偏移会出现问题。
例如,在这种情况下,我发送本地时间和服务器时间(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);
我需要一个更简单的解决方案
由于