我想和momentjs进行比较。这些时间来自时间选择器,并使用ISO 8601格式,即24小时hh:mm(更多信息here)。
我想比较示例“ 01:45”和“ 13:36”。使用函数isSameOrBefore
应该返回true
。不幸的是
const valid = moment("01:45").isSameOrBefore("13:36")
不起作用,因为iso字符串使用错误的格式。我得到警告
弃用警告:提供的值不在公认的RFC2822中或 ISO格式。构造回落到js Date()的那一刻
我试图为此
const isoFormat = 'hh:mm'
const first = "01:45"
const second = "13:36"
const firstBeforeSecond = moment(first, isoFormat).isBefore(second, isoFormat)
console.log(firstBeforeSecond)
<script src="https://cdn.jsdelivr.net/npm/moment@2.24.0/moment.min.js"></script>
,但这仍然失败。我返回的值是false
,这是不正确的。比较这些时间字符串的正确方法是什么?
答案 0 :(得分:2)
利用这一刻是巨大的矫over过正
只需比较字符串
../
是真的
include function(path/to/my/folder/neededThis.php);
也是如此
原因是,在ISO 8601中,字符串具有相同的长度,因此将
"01:45" < "13:36"
始终是最小值,"13:36" === "13:36"
始终是最大值。
这是安全的,因为它们保留字符串并在其中包含“:”,因此不会被强制转换为数字或丢失前导0或类似的数字
答案 1 :(得分:1)
正确的语法是:
moment(first, isoFormat).isBefore(moment(second, isoFormat))
答案 2 :(得分:1)
尝试
var first = moment('01:45', 'hh:mm');
var second = moment('13:36', 'hh:mm');
console.log(first. isSameOrBefore(second));
指定格式不会发出任何警告:)