【发布时间】:2017-04-11 08:11:37
【问题描述】:
我有以下 JSON 数组(注意这些只是数组的第 5 和第 6 个元素):
[
{
Day: 'Mon',
EndTime: '{ts \'1970-01-01 18:00:00\'}',
StartTime: '{ts \'1970-01-01 16:30:00\'}',
courseName: 'Computer Science 250: Introduction to Website Design',
Credits: '4'
},
{
Day: 'Mon',
EndTime: '{ts \'1970-01-01 18:30:00\'}',
StartTime: '{ts \'1970-01-01 17:30:00\'}',
courseName: 'Math 220: Differential Equations',
Credits: '3'
}
]
数组中的数据按“EndTime”的值排序。当我尝试检查对象在 i - 1 (18:00:00) 的结束时间是否在下一个对象的开始时间和结束时间之间(如果在 i 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 循环...如果数组 "monday" 的长度为 2,那么 1
-
尝试将格式更改为
'YYYY-MM-DD hh:mm:ss a'; -
@GiorgioBozio 对此表示感谢,我会为此设置条件
标签: javascript arrays json momentjs