gpt4 book ai didi

javascript - 如何检查当前时间是否在数组中存储的两个给定时间之间

转载 作者:行者123 更新时间:2023-12-04 08:54:38 26 4
gpt4 key购买 nike

我正在尝试使用 moment 的“isBetween”函数检查当前时间是否介于两个时间之间,但它不起作用。我需要找到这个时间所属的类次。
任何建议或任何其他方法。

var Time = [{
"shiftName": "Shift A",
"shiftCode": "shiftA",
"startTime": "07:00",
"endTime": "15:00",
},
{
"shiftName": "Shift B",
"shiftCode": "shiftB",
"startTime": "15:00",
"endTime": "23:00",
},
{
"shiftName": "Shift C",
"shiftCode": "shiftC",
"startTime": "23:00",
"endTime": "07:00",
}

]

Time.forEach(element => {
var st = moment(element.startTime, 'HH:mm');
var et = moment(element.endTime, 'HH:mm');

if (moment().isBetween(st, et)) {
console.log(element.shiftName)
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

最佳答案

以下函数为您提供当前类次的名称,但您也可以传递一个 moment.js 对象来获取特定时间的类次。
对于属于多个类次的边缘情况(如“7:00”、“15:00”等),我的脚本返回第一个找到的类次。

function getShiftName(time = moment()) {
const isBetween = (a, b, c) => ((a <= b && b <= c) || a > c && (a <= b || b <= c));
for (shift of Time) {
if (isBetween(shift.startTime, time.format("HH:mm"), shift.endTime)) {
return shift.shiftName;
}
}
return "none";
}

// your sample data, minified for a shorter code-block
var Time = [{"shiftName": "Shift A", "shiftCode": "shiftA", "startTime": "07:00", "endTime": "15:00"},{ "shiftName": "Shift B", "shiftCode": "shiftB", "startTime": "15:00", "endTime": "23:00", }, { "shiftName": "Shift C", "shiftCode": "shiftC", "startTime": "23:00", "endTime": "07:00", }];

// demo
console.log("now", getShiftName()); // the current shift name
console.log(" 12", getShiftName(moment(12,"HH"))); // shift A
console.log(" 18", getShiftName(moment(18,"HH"))); // shift B
console.log(" 23", getShiftName(moment(23,"HH"))); // shift B
console.log(" 24", getShiftName(moment(24,"HH"))); // shift C
console.log(" 4", getShiftName(moment( 4,"HH"))); // shift C
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

关于javascript - 如何检查当前时间是否在数组中存储的两个给定时间之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63908052/

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