momentjs 中的 isBefore 函数不起作用
isBefore function in momentjs is not working
我尝试检查 h:mm 中的某个时间是否早于具有相同格式的另一个时间。但是,控制台向我显示一条错误消息,说明 isBefore 不是函数,或者它始终打印 false。我在 Ionic 3/Angular.
中使用此代码
如果我按如下方式编码,控制台会打印 false。我尝试了不同的参数而不是小时。
var start_time = moment('20:00', 'h:mm').format('LT');
var last_time = moment('21:59', 'h:mm').format('LT');
var check_last = moment(start_time).isBefore(last_time, 'hour');
console.log(check_last);
如果我编码如下。如下面的 link 所示。控制台给我的错误是
var start_time = moment('20:00', 'h:mm').format('LT');
var last_time = moment('21:59', 'h:mm').format('LT');
var check_last = start_time.isBefore(last_time, 'hour');
console.log(check_last);
在momentjs官网上我没弄清楚怎么比较两次。你能给我支持吗?
Moment 的 format()
returns a string so you can't use isBefore
类似于 time.format('hh:mm'),这就是你得到 isBefore 不是函数的原因。
此外,根据文档本身,moment().isBefore() 具有未定义的行为,不应使用!如果代码运行得很快,最初创建的时刻将与在执行检查时在 isBefore 中创建的时刻相同,因此结果将为 false
尝试不格式化以获得所需的输出
var start_time = moment("20:00", "h:mm");
var last_time = moment("21:59", "h:mm");
var check_last = moment(start_time).isBefore(last_time, "hour");
console.log(check_last);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
所以 isBefore() 没有按预期工作的原因是格式。格式化时间 returns 一个字符串,比较时可能会出错。
如果将时间保存为moment对象,moment可以比较准确。比较后就可以格式化了。这是一个例子:
var start_time = moment('20:00', 'h:mm');
var last_time = moment('21:59', 'h:mm');
var check_last = moment(start_time).isBefore(last_time, 'hour');
console.log(check_last);
// format at end
// return [
// start_time.format('LT'),
// last_time.format('LT'),
// ];
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.3/moment.min.js"></script>
我尝试检查 h:mm 中的某个时间是否早于具有相同格式的另一个时间。但是,控制台向我显示一条错误消息,说明 isBefore 不是函数,或者它始终打印 false。我在 Ionic 3/Angular.
中使用此代码如果我按如下方式编码,控制台会打印 false。我尝试了不同的参数而不是小时。
var start_time = moment('20:00', 'h:mm').format('LT');
var last_time = moment('21:59', 'h:mm').format('LT');
var check_last = moment(start_time).isBefore(last_time, 'hour');
console.log(check_last);
如果我编码如下。如下面的 link 所示。控制台给我的错误是
var start_time = moment('20:00', 'h:mm').format('LT');
var last_time = moment('21:59', 'h:mm').format('LT');
var check_last = start_time.isBefore(last_time, 'hour');
console.log(check_last);
在momentjs官网上我没弄清楚怎么比较两次。你能给我支持吗?
Moment 的 format()
returns a string so you can't use isBefore
类似于 time.format('hh:mm'),这就是你得到 isBefore 不是函数的原因。
此外,根据文档本身,moment().isBefore() 具有未定义的行为,不应使用!如果代码运行得很快,最初创建的时刻将与在执行检查时在 isBefore 中创建的时刻相同,因此结果将为 false
尝试不格式化以获得所需的输出
var start_time = moment("20:00", "h:mm");
var last_time = moment("21:59", "h:mm");
var check_last = moment(start_time).isBefore(last_time, "hour");
console.log(check_last);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
所以 isBefore() 没有按预期工作的原因是格式。格式化时间 returns 一个字符串,比较时可能会出错。
如果将时间保存为moment对象,moment可以比较准确。比较后就可以格式化了。这是一个例子:
var start_time = moment('20:00', 'h:mm');
var last_time = moment('21:59', 'h:mm');
var check_last = moment(start_time).isBefore(last_time, 'hour');
console.log(check_last);
// format at end
// return [
// start_time.format('LT'),
// last_time.format('LT'),
// ];
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.3/moment.min.js"></script>