Javascript 使用momentjs检查零持续时间

Javascript 使用momentjs检查零持续时间,javascript,momentjs,Javascript,Momentjs,我实现了一个函数,它获取一个字符串并计算一天的序列 函数因无效的持续时间字符串而挂起。这些字符串被解释为零持续时间,因此函数构建一个无限序列[“00:00”,“00:00”,…] timeSeq("PT12H") // ["00:00", "12:00"] timeSeq(undefined) // hangs .... 零持续时间通过duration.toISOString()映射到P0D。我应该如何检查函数中的零持续时间 const timeSeq = (durationString,

我实现了一个函数,它获取一个字符串并计算一天的序列

函数因无效的持续时间字符串而挂起。这些字符串被解释为零持续时间,因此函数构建一个无限序列
[“00:00”,“00:00”,…]

timeSeq("PT12H")
// ["00:00", "12:00"]

timeSeq(undefined)
// hangs ....
零持续时间通过
duration.toISOString()
映射到
P0D
。我应该如何检查函数中的零持续时间

const timeSeq = (durationString, format = "HH:mm") => {
  const duration = moment.duration(durationString);
  // function should return [] for zero duration
  // ???
  const current = moment().startOf("day");
  const end = current.clone().add(1, "day").startOf("day");
  const sequence = [];
  while (current < end) {
    sequence.push(current.format(format));
    current.add(duration);
  }
  return sequence;
};
const timeSeq=(durationString,format=“HH:mm”)=>{
常量持续时间=时刻持续时间(durationString);
//函数应返回[],持续时间为零
// ???
恒流=力矩().startOf(“日”);
const end=current.clone().add(1,“日”).startOf(“日”);
常量序列=[];
while(当前<结束){
sequence.push(current.format(format));
当前。添加(持续时间);
}
返回序列;
};

您可以使用函数获取持续时间值,您可以使用或
作为('ms')
(或类似的getter)

此外,您还可以使用检查对象是否为持续时间

您可以使用以下内容:

函数为零持续时间(dur){
如果(!力矩持续时间(dur)){
返回true;
}
返回dur.as('毫秒')==0;
}
[null,未定义,'P0D','hello','P1D']。forEach((durationString)=>{
常量持续时间=时刻持续时间(durationString);
log(durationString,isZeroDuration(duration));
});

由于我上面的函数不能在负持续时间下正常工作,我将您的解决方案调整为
返回持续时间。由于('ms')您是对的,因此提供的示例用于问题标题(使用momentjs检查零持续时间),深入查看问题