Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查当前时间是否在数组中存储的两个给定时间之间_Javascript_Node.js - Fatal编程技术网

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

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

我试图使用力矩的“isBetween”函数检查当前时间是否在两个计时之间,但它不起作用。我需要找到这次的班次。 任何建议或任何其他方法

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函数中组合的逻辑拆分。但是,由于这不是您最初问题的一部分,我不会编辑我的答案来进行此操作。谢谢,您的答案对我很有用。