我正在为一个奇怪的问题而苦苦挣扎,但让我们首先谈谈我要实现的目标。我正在开发一个“从-到”日期和时间选择器,现在我陷入了检查第一个值(从)是否不位于第二个值(到)之后的问题。我正在使用moment.js,它工作得很好..除了以下三个查询:isBefore
,isAfter
和isSame
。
我的代码如下if(moment(from).isAfter(to)) { ... }
,它返回了false
。实际上,我进一步进行了测试,并检查了所有/最可能的组合。输出如下:
EARLY equals "31.12.2018 11:00"
LATE equals "01.12.2018 10:00"
LATE is before EARLY = false (should equal true)
EARLY is after LATE = false (should equal true)
LATE is after EARLY = false
EARLY is before LATE = false
EARLY is same as LATE = false
LATE is same as EARLY = false
我不知道可能是什么问题。我100%都认为这两个变量都是字符串,并且将它们都解析为moment()
,甚至可以以编程方式添加和减去天,月等,而不会出现任何错误。
试图比较两个该死的日期已经漫长了一天。现在,我希望社区比我更聪明! :D
答案 0 :(得分:0)
以下返回
false
:
invalid.isAfter(another)
invalid.isAfter(invalid)
another.isAfter(invalid)
invalid.isBefore(another)
invalid.isBefore(invalid)
another.isBefore(invalid)
赔率是,您的一个(或两个)日期无效(或无效)。
我的猜测是您错误地解析了日期。 Docs建议将String +格式用于非标准日期格式。
const incorrect = '31.12.2017 11:00';
console.log(moment(incorrect)); // invalid date
const correct = '31.12.2017 11:00';
console.log(moment(correct, 'DD.MM.YYYY HH:mm')); // valid date