首页 > 解决方案 > moment.js 比较未按预期工作

问题描述

我需要比较两个日期以检查所选日期是否小于今天。

//taking current time

    var orignalDateFromAPI = moment();
    var selectedDate = moment(orignalDateFromAPI,"YYYY-MM-DD");

    console.log(selectedDate.format("DD-MM-YYYY"));

    var nativeDate = new Date(selectedDate);
    var parsedDate= moment(nativeDate,"YYYY-MM-DD");

    console.log(parsedDate.format("DD-MM-YYYY"));

    console.log(selectedDate.isSame(parsedDate)); //true
    console.log(selectedDate == parsedDate); //false

为什么第一个语句打印true而第二个打印false?有没有更好的方法来检查一个日期是否小于或等于另一个日期?

编辑:我去了标记为重复但找不到与 moment.js 比较相关的任何答案的问题。
我浏览了 moment.js 文档,发现是相同的或之前的。我认为这会很好。有什么注意事项吗?

标签: javascriptdatetimemomentjsdatetime-format

解决方案


=====不能用于比较object类型变量。如果您看到类型,selectedDateparsedDateobject(时刻)类型。所以,你不能使用==. 相反,您必须使用isSameMomentJS 的功能。

var orignalDateFromAPI = moment();
var selectedDate = moment(orignalDateFromAPI,"YYYY-MM-DD");

console.log(selectedDate.format("DD-MM-YYYY"));

var nativeDate = new Date(selectedDate);
var parsedDate= moment(nativeDate,"YYYY-MM-DD");

console.log(parsedDate.format("DD-MM-YYYY"));

console.log('typeof selectedDate ' + typeof selectedDate);
console.log(selectedDate.isSame(parsedDate)); //true
console.log(selectedDate == parsedDate); //false
<script src="https://momentjs.com/downloads/moment.js"></script>


推荐阅读