javascript - 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 文档,发现是相同的或之前的。我认为这会很好。有什么注意事项吗?
解决方案
==
或===
不能用于比较object
类型变量。如果您看到类型,selectedDate
它parsedDate
是object
(时刻)类型。所以,你不能使用==
. 相反,您必须使用isSame
MomentJS 的功能。
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>
推荐阅读
- css - 如何在类中添加css类
- excel - 基于多列的 SUMIF
- javascript - JS `import` 未定义,可能是循环导入问题?
- java - ArrayList.size() 返回字段的大小,而不是列表的大小,为什么?
- python - Python - 无法将文件上传到 AWS S3 存储桶中定义的文件夹
- angular - Angular 4 表单验证不起作用
- android - 如何在列表视图中找到项目的位置
- swift - 渲染到金属中的屏幕外帧缓冲区
- laravel - 根据下拉菜单中的选定值获取数据 - Laravel 5.4
- javascript - 在外部按钮上触发 div/单击光滑的滑块