拆分包含小时x - >的momentJs对象小时y,值为15分钟的对象

时间:2017-02-08 15:57:30

标签: javascript angularjs momentjs

我使用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);
}

1 个答案:

答案 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)。

这是一个工作示例:

&#13;
&#13;
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;
&#13;
&#13;

相关问题