微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何计算时间表两次之间的时隙

如何解决如何计算时间表两次之间的时隙

我在学校有开始时间和结束时间。并且我想使用开始时间结束时间并给定时间段为该学校生成时间表。

时间是24小时。

例如:-

const startingTime = {
   startHour: 8,startMinutes: 30
}

const endTime = {
   endHour: 17,endMinutes: 30
}

我也可以提到一个时隙。有两种时隙类型( 1小时 30分钟)。

设置所有这些参数后,我需要一个在开始时间和结束时间之间具有所有时隙的数组。

我将举一个简单的例子

我学校的开始时间和结束时间如下,

const startingTime = {
   startHour: 8,startMinutes: 30
}

const endTime = {
   endHour: 9,endMinutes: 30
}

IF时隙为1小时

这些数据中我需要的是

8:30-9:30

IF时隙为30分钟

8:30-9:00

9:00-9:30

一个示例

const startingTime = {
   startHour: 8,startMinutes: 30
}

const endTime = {
   endHour: 2,endMinutes: 00
}

对于这种情况,我们不能使用1小时时隙,因为还有30分钟。所以我已经验证过,只有我们只能提及30分钟的时隙,因此在这种情况下,我们只能使用30分钟的时隙。

IF时隙为30分钟

8:30-9:00

9:00-9:30

9:30-10:00

10:00-10:30

10:30-11:00

像这样,我需要一个数组,因此在生成时间表时,我可以在每个时隙打印每个。

解决方法

考虑使用日期和时间库,例如Luxon(https://moment.github.io/luxon/index.html

const slot = Duration.fromMillis(1800000) // 30:00 minutes

const period = {
    startTime: DateTime.local(2020,1,8,30),endTime: DateTime.local(2020,10,0)
}

var slots = [];
var slotCount = Math.trunc((period.endTime.toMillis() - period.startTime.toMillis()) / slot.milliseconds);
for (var i = 0; i < slotCount; i++) {
    slots[i] = {
        startTime: period.startTime.plus(i * slot.milliseconds),endTime: period.startTime.plus((i + 1) * slot.milliseconds)
    }
}

var formattedSlots = slots.map(x => ({
    startHour: x.startTime.hour,startMinutes: x.startTime.minute,endHour: x.startTime.plus(slot).hour,endMinutes: x.startTime.plus(slot).minute,}));

console.log(formattedSlots);
// Prints out:
// 0: {startHour: 8,startMinutes: 30,endHour: 9,endMinutes: 0}
// 1: {startHour: 9,startMinutes: 0,endMinutes: 30}
// 2: {startHour: 9,endHour: 10,endMinutes: 0}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。