gpt4 book ai didi

javascript - 创建两个日期之间的可用时间段数组

转载 作者:行者123 更新时间:2023-12-02 15:50:34 25 4
gpt4 key购买 nike

我在前端工作方面很弱,需要一点帮助。

我正在开发一个基本表单,为用户提供在未来 3 天(含)内进行预约的可用时间表选项。

所以到目前为止我已经写了:

    var today = new Date();

var lastday = new Date(today);
lastday.setDate(today.getDate() + 4);

var daterange = getAllDays(today, lastday);

function getAllDays(today, lastday)
{
var s = new Date(today);
var e = new Date(lastday);
var a = [];


//this gets my start time days
while (s < e)
{

//if day Saturday hours change
if(s.getDay() == 0)
{
//if Sunday skip
}
else if (s.getDay() == 6)
{
//push start onto array
a.push(setWorkingHours(s, '10'));

//push end onto array
a.push(setWorkingHours(s, '20'));
}
else
{
//push start onto array
a.push(setWorkingHours(s, '13'));

//push end onto array
a.push(setWorkingHours(s, '20'));
}


s = new Date(s.setDate(s.getDate() + 1))

}

return a;

};


function setWorkingHours(date, hour)
{
var dateTime = new Date();
dateTime.setDate(date.getDate());
dateTime.setHours(hour, '0', '0');

return dateTime;
}


alert(daterange.join('\n'));

Here is a fiddle.

现在我知道可以进行改进,并且我愿意接受任何改进。

所以上面的代码为我提供了一个带有开始和停止时间的天数数组。现在我正在努力弄清楚如何获得每天开始和停止时间中的一系列小时。

此外,一旦我有时间,我就会查询返回事件的谷歌日历,因此我会将其解析为数组。

即将举行的事件:鲍勃· builder (2015-08-07T10:00:00-08:00)无名氏 (2015-08-08T11:00:00-08:00)玛丽·简 (2015-08-10T18:00:00-08:00)

最后,我需要将可用数组与预订数组“相交”并返回剩下的内容。

至于约会本身。如果一个人选择了时间,我会安排两个小时的时间段。预约可以在整点或整点开始。

最佳答案

我将使用类似于下面的 getTimeSlotsForDay 函数的内容来获取给定日期的可用开始时间的数组。

var GoogleCalenderAppointments = null;
var today = new Date();
var lastDay = new Date(today);
lastDay.setDate(today.getDate() + 4);

function checkGoogleCalendarConflict(date) {
var hasConflict = false;
if (!GoogleCalenderAppointments) {
//logic to get scheduled appointments
}

//iterate through relevant scheduled appointments
//if argument `date` has conflict, return true
//else, return false

return hasConflict
}

function getTimeSlotsForDay(date) {
var timeSlots = []
var dayStart = new Date(date)
var dayEnd = new Date(date)

switch (date.getDay()) {
case 0: //Sunday
return timeSlots;
case 6: //Saturday
dayStart.setHours(10, 0, 0, 0)
dayEnd.setHours(20, 0, 0, 0)
break;
default:
dayStart.setHours(13, 0, 0, 0)
dayEnd.setHours(20, 0, 0, 0)
}
do {
if (!checkGoogleCalendarConflict(dayStart)) {
timeSlots.push(new Date(dayStart))
}
dayStart.setHours(dayStart.getHours(), dayStart.getMinutes() + 30)
} while (dayStart < dayEnd);

return timeSlots
}

var message = ""
for (var i = new Date(today); i < lastDay; i.setDate(i.getDate() + 1)) {
message += i.toDateString() + ":\n"
message += getTimeSlotsForDay(i).map(function(it) {
return it.toTimeString();
}).join(",\n") + "\n";
}
alert(message)

关于javascript - 创建两个日期之间的可用时间段数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com