我使用的moment().add
错误吗?因为,使用我的代码,dayTime2
分钟值并没有变大。
目标是在 dayTime2
上增加 15 分钟,只要它超过了白天的值。
示例值:(显然我没有使用这些值 irl,而是 momentJS 对象)
startAt
= 7 -> 7.15 -> 7.30 等endAt
= 10
var dayTime = moment.utc(endAt).format("HH:mm");
var dayTime2 = moment.utc(startAt).format("HH:mm");
while (dayTime2 <= dayTime) {
var data = {
title: 'VAPAA AIKA',
type: 0,
startsAt: dayTime2,
endsAt: moment(dayTime2).add(30, 'minute')
};
moment(dayTime2).add(15, 'minute');
console.log('TIME: ' + dayTime2);
console.log(data);
}
最佳答案
您没有以正确的方式利用时刻。
首先,要从非 ISO 8601 格式的字符串创建 moment 对象,请使用 moment(String, String);
或者如果您输入的是数字,您可以使用 moment({unit: value, ...});
指定单位(例如小时
)。
然后不要比较字符串,但您应该使用 moment comparing functions像isBefore
.
代码的另一个问题是 moment(dayTime2).add(15, 'minute')
创建了一个新的 moment 对象,但您需要修改 dayTime2
本身。请改用 dayTime2.add(15, 'month')
。
请注意,moment 对象是可变的,因此您必须使用 clone()
,如果您不想更改原始值(例如,当您设置 data
对象的 endsAt
属性时)。
这是一个工作示例:
var startAt = 7;
var endAt = '10';
var dayTime = moment.utc(endAt, 'h');
var dayTime2 = moment.utc({h: startAt});
while (dayTime2.isBefore(dayTime)) {
var data = {
title: 'VAPAA AIKA',
type: 0,
startsAt: dayTime2.format('HH:mm'),
endsAt: dayTime2.clone().add(30, 'minute').format('HH:mm')
};
dayTime2.add(15, 'minute');
console.log('TIME: ' + dayTime2.format('HH:mm'));
console.log(data);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
关于javascript - 分割包含小时 x -> 小时 y 的 momentJs 对象,值为 15min 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117832/