gpt4 book ai didi

javascript - 使用 momentjs 检查零持续时间

转载 作者:行者123 更新时间:2023-11-29 20:47:37 24 4
gpt4 key购买 nike

我已经实现了一个获得 ISO 8601 duration 的函数字符串并计算一天的序列。

该函数因无效的持续时间字符串而挂起。这些字符串被解释为零持续时间,因此该函数构建了一个无限序列 ["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;
};

最佳答案

您可以使用 as 获取持续时间值功能,你可以使用asMilliseconds()as('milliseconds')(或类似的 getter)。

此外,您可以使用 moment.isDuration(obj) 检查对象是否为持续时间.

你可以使用这样的东西:

function isZeroDuration(dur){
if( !moment.isDuration(dur) ){
return true;
}
return dur.as('milliseconds') === 0;
}

[null, undefined, 'P0D', 'hello', 'P1D'].forEach((durationString) => {
const duration = moment.duration(durationString);
console.log(durationString, isZeroDuration(duration) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

关于javascript - 使用 momentjs 检查零持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53740940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com