Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何使用Moment.JS检查时间戳是否介于其他两个时间戳之间_Javascript_Arrays_Json_Momentjs - Fatal编程技术网

Javascript 如何使用Moment.JS检查时间戳是否介于其他两个时间戳之间

Javascript 如何使用Moment.JS检查时间戳是否介于其他两个时间戳之间,javascript,arrays,json,momentjs,Javascript,Arrays,Json,Momentjs,我有以下JSON数组(注意,这些只是数组的第5和第6个元素): 数组中的数据按“EndTime”的值排序。当我尝试检查对象在I-1(18:00:00)的结束时间是否在下一个对象的开始时间和结束时间之间(如果是17:30:00到18:30:00),我应该得到true,但是isBetween方法返回false 我知道我犯了一些简单的错误,我该怎么解决呢 这是我的密码: for(let i = 1; i < monday.length-1; i++) { const year = '1970-

我有以下JSON数组(注意,这些只是数组的第5和第6个元素):

数组中的数据按“EndTime”的值排序。当我尝试检查对象在I-1(18:00:00)的结束时间是否在下一个对象的开始时间和结束时间之间(如果是17:30:00到18:30:00),我应该得到true,但是isBetween方法返回false

我知道我犯了一些简单的错误,我该怎么解决呢

这是我的密码:

for(let i = 1; i < monday.length-1; i++) {

const year = '1970-01-01';
const format = 'DD/MM/YYYY hh:mm:ss a';

  var next_endtime = monday[i].EndTime.substr(16, 8);
  var next_starttime = monday[i].StartTime.substr(16, 8);
  var prev_endtime = monday[i-1].EndTime.substr(16, 8);

  var plesson_e = moment(year + 'T' + prev_endtime, format), 
      nlesson_start = moment(year + 'T' + next_starttime, format), 
      nlesson_end = moment(year + 'T' + next_endtime, format);

  var testbool = moment(plesson_e).isBetween(nlesson_start, nlesson_end, 'time');

console.log(testbool);
}
for(设i=1;i
将datetime或格式传递给矩JS,它对我有用:

const monday=[{
日期:周一,
结束时间:{ts'1970-01-01 18:00:00\'},
开始时间:{ts'1970-01-01 16:30:00\'},
课程名称:“计算机科学250:网站设计导论”,
学分:'4'
},
{
日期:周一,
结束时间:{ts'1970-01-01 18:30:00\'},
开始时间:{ts'1970-01-01 17:30:00\'},
课程名称:“数学220:微分方程”,
学分:'3'
}
]
常量格式='hh:mm:ss a';
var next_endtime=monday[1].endtime.substr(16,8);
var next_starttime=monday[1].starttime.substr(16,8);
var prev_endtime=monday[0].endtime.substr(16,8);
var plesson_e=力矩(上一个结束时间,格式),
nlesson_start=时刻(下一个开始时间,格式),
nlesson_end=时刻(下一个结束时间,格式);
var testbool=时刻(plesson_e).isBetween(nlesson_start,nlesson_end,'time');
log(下一个结束时间、下一个开始时间、上一个结束时间);
日志(nlesson_end,nlesson_start,plesson_e);
log(testbool)

传递给矩的字符串与指定的格式不匹配:

const year = '1970-01-01'; // => see the '-', and the year is first
const format = 'DD/MM/YYYY hh:mm:ss a'; // => you put '/' and day first
尝试将格式值更改为:

const format = 'YYYY-MM-DD hh:mm:ss a';

请看

看看这里,我想它将永远不会得到任何for循环运行。。。如果数组“monday”的长度为2,则1<2-1为false…请尝试将格式更改为
'YYYY-MM-DD hh:MM:ss a'
@GiorgioBozio谢谢,will为此设置了一个条件,因为我知道这很简单,非常感谢,它现在起作用了有时候,两只眼睛比一只好;)
const format = 'YYYY-MM-DD hh:mm:ss a';