为何Twix日期范围测试失败?冲突日期范围检测无响应排查
解决Twix库日期范围检测失效的问题
嘿,我一眼就瞅出问题所在了——你用moment解析日期时没指定明确格式,这会让moment根据系统环境瞎猜日期格式,很大概率解析出错误甚至无效的时间,直接导致Twix的所有检测方法都返回false。
举个例子,moment("18-01-2018 02:00")如果按默认规则,可能会把18当成月份(但月份最大才12),生成的moment对象其实是无效的,基于它创建的Twix自然没法正确判断范围关系。
修正后的代码
你得给moment指定明确的日期格式,确保解析精准:
// 指定DD-MM-YYYY HH:mm格式解析日期 const eventTimeRange = moment("18-01-2018 02:00", "DD-MM-YYYY HH:mm").twix("18-01-2018 03:00", "DD-MM-YYYY HH:mm"); const newEventTimeRange = moment("18-01-2018 02:00", "DD-MM-YYYY HH:mm").twix("18-01-2018 03:00", "DD-MM-YYYY HH:mm"); console.log(eventTimeRange.overlaps(newEventTimeRange)); // true console.log(eventTimeRange.engulfs(newEventTimeRange)); // true console.log(eventTimeRange.equals(newEventTimeRange)); // true
额外说明
Twix默认用左闭右开的区间规则(包含起始时间,不包含结束时间)。如果你的业务需要包含结束时间,可以在创建Twix对象时加上{allDay: false, inclusive: true}参数,不过对你的测试场景来说,默认规则就足够让检测方法返回正确结果了。
内容的提问来源于stack exchange,提问作者Jayleaf
相关产品推荐
相关产品推荐

