javascript - 分割包含小时 x -> 小时 y 的 momentJs 对象,值为 15min 对象

标签 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);
}

最佳答案

您没有以正确的方式利用时刻。

首先,要从非 ISO 8601 格式的字符串创建 moment 对象,请使用 moment(String, String);或者如果您输入的是数字,您可以使用 moment({unit: value, ...});指定单位(例如小时)。

然后不要比较字符串,但您应该使用 moment comparing functionsisBefore .

代码的另一个问题是 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/

相关文章:

javascript - React Native/Moment Js 日期解析问题

javascript - 在 moment js 中解析 ISO 字符串到最新

javascript - AngularJS 中的输入类型编号

vue.js - 如何在单个元素中连接日期选择器值和时间选择器值?

javascript - 在 Gulp 中的 "pipes"之间传递变量

javascript - 如何在 ajax jQuery 中使用变量名

javascript - 为钛合金 iPad 和 iPhone 加载不同 View

javascript - 使用 websockets 接收消息时如何更改 componentDidMount() 内的状态?

javascript - 我怎样才能进入完整的 Angular 应用程序状态

javascript - 以 Angular 排序数组不起作用