1 回答

TA贡献1784条经验 获得超2个赞
一种解决方法是使用 unix 时间戳进行计算。一小时有 3600 秒 = 3600000 毫秒:
const timeSlots = [];
let startDate = moment.utc('2020-03-09 11:00').valueOf();
let endDate = moment.utc('2020-03-09 14:30').valueOf();
while ((endDate-startDate) >= 3600000) {
timeSlots.push(moment.utc(startDate));
startDate += 3600000;
}
console.log(timeSlots.map(slot => slot.toString()));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
更新:
经过一些研究,似乎该console.log(timeSlots)声明是问题所在。这会记录一些我们不应该关心的内部属性。如果我们使用,它似乎按预期工作:
const timeSlots = [];
let startDate = moment('2020-03-09 11:00');
let endDate = moment('2020-03-09 12:30');
while (endDate.diff(startDate, 'minutes') >= 60) {
timeSlots.push(startDate.clone());
startDate.add(30, 'minutes');
}
console.log(timeSlots.map(slot => slot.format()));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
添加回答
举报