我使用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);
}
答案 0 :(得分:1)
你没有以正确的方式使用。
首先,要使用非ISO 8601格式的字符串创建时刻对象,请使用moment(String, String);
,或者如果您的输入是数字,则可以使用moment({unit: value, ...});
指定单位(例如hours
)。
然后不比较字符串,但您应该像comparing functions一样使用isBefore
。
您的代码的另一个问题是moment(dayTime2).add(15, 'minute')
创建了一个新的时刻对象,但您需要修改dayTime2
本身。请改用dayTime2.add(15, 'minute')
。
请注意,时刻对象是可变的,因此如果您不想更改原始值,则必须使用clone()
(例如,当您设置endsAt
data
属性时} object)。
这是一个工作示例:
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);
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
&#13;