Javascript 如何检查当前时间是否在数组中存储的两个给定时间之间
我试图使用力矩的“isBetween”函数检查当前时间是否在两个计时之间,但它不起作用。我需要找到这次的班次。 任何建议或任何其他方法Javascript 如何检查当前时间是否在数组中存储的两个给定时间之间,javascript,node.js,Javascript,Node.js,我试图使用力矩的“isBetween”函数检查当前时间是否在两个计时之间,但它不起作用。我需要找到这次的班次。 任何建议或任何其他方法 var时间=[{ “shiftName”:“Shift A”, “shiftCode”:“shiftA”, “开始时间”:“07:00”, “结束时间”:“15:00”, }, { “班次名称”:“班次B”, “shiftCode”:“shiftB”, “开始时间”:“15:00”, “结束时间”:“23:00”, }, { “班次名称”:“班次C”, “sh
var时间=[{
“shiftName”:“Shift A”,
“shiftCode”:“shiftA”,
“开始时间”:“07:00”,
“结束时间”:“15:00”,
},
{
“班次名称”:“班次B”,
“shiftCode”:“shiftB”,
“开始时间”:“15:00”,
“结束时间”:“23:00”,
},
{
“班次名称”:“班次C”,
“shiftCode”:“shiftC”,
“开始时间”:“23:00”,
“结束时间”:“07:00”,
}
]
Time.forEach(元素=>{
var st=力矩(element.startTime,'HH:mm');
var et=力矩(element.endTime,'HH:mm');
如果(力矩().isBetween(st,et)){
console.log(element.shiftName)
}
});代码>
您可以像'07:30'>'05:30'那样比较时间。
当是白天时,一切都很容易——这一时刻应该晚于开始时间,早于结束时间。但是夜间(例如,23:00-07:00)有点棘手,因为开始时间比结束时间高。所以你必须检查它是什么样的跨度
function findShift(moment){
for (let i = 0; i < Time.length; i++) {
const start = Time[i].startTime;
const end = Time[i].endTime;
if (start > end) {
if (moment <= start || moment >=end) return Time[i].shiftName
} else {
if (moment >= start && moment <= end) return Time[i].shiftName
}
}
return null
}
功能查找换档(力矩){
for(设i=0;i结束){
if(矩=结束)返回时间[i]。移位名称
}否则{
如果(moment>=start&&moment,则以下函数将为您提供当前班次的名称,但您也可以传递矩.js对象以获取特定时间的班次
对于属于多个班次的边缘情况(如“7:00”、“15:00”和…),我的脚本将返回找到的第一个班次
函数getShiftName(time=moment()){
const isBetween=(a,b,c)=>((a)因此,moment()
将返回用户时区中的当前时间,这将发现当前时间是否在特定班次内。如果要检查第三次,请用moment(第三次,'HH:mm')替换moment()
)
或其他。非常感谢,它在我需要的所有场景中都能完美运行。我注意到如果我们删除第一个数据(班次a)从数组中,它返回错误的班次,而不是无班次。我还想显示当前日期和班次,如果是班次C,我想在午夜00:00之后更改日期时,将当前日期显示为上一个日期。抱歉,看起来我在isBetween函数的最后部分混淆了a和C。现在已修复:)你能在这方面帮助我吗?我还需要班次的当前日期。但是如果是C班次,当前日期会被更改,我希望C班次的当前日期-1在00:00到07:00之间。我想我们需要更改获取当前日期的整个逻辑吗,因为isbetween可能没有用处。请帮助。谢谢,你会的我必须将我在isBetween函数中组合的逻辑拆分。但是,由于这不是您最初问题的一部分,我不会编辑我的答案来进行此操作。谢谢,您的答案对我很有用。