Moment.js让我发疯。
我有这种格式的日期
2019年7月10日位于我的对象alldata
数组中,这是我的代码:
我需要过滤掉DueDate在过去90天范围之外的对象。
问题是比较无法正常进行...告诉我 11-05-2019> 08-08-2019
我是否丢失了某些内容,或者moment.js中存在错误?随意建议任何不使用moment.js的方法
var todate = moment().format("DD-MM-YYYY");
var fromdate = moment().subtract(90, "days").format("DD-MM-YYYY");
var data = [];
for (i = 0; i < alldata.length; i++) {
duedate = moment(alldata[i].DueDate, "DD-MMM-YYYY").format('DD-MM-YYYY');
if ( duedate >= fromdate) {
alert("good!");
} else
alert("bad!");
}
答案 0 :(得分:0)
您不比较整数或数字format
返回一个字符串。
为什么不使用moment.js库中的isAfter
内置方法来比较两个“时刻”。
var fromdate = new moment().subtract(90, "days");
for (i = 0; i < alldata.length; i++) {
let checkDate = new moment(alldata[i].DueDate,"DD-MMM-YYYY")
let isAfter = checkDate.isAfter(fromdate);
if ( isAfter ) {
alert("good!");
} else
alert("bad!");
}
答案 1 :(得分:0)
您正在比较字符串,因为您正在格式化比较之前的日期。
这是moment.js的独立示例:
//Include https://momentjs.com/downloads/moment.js
var oldDate = new moment('11-Jan-2018', 'DD-MMM-YYYY');
var newDate = new moment('01-Feb-2018', 'DD-MMM-YYYY');
if (newDate.isAfter(oldDate)) {
alert('it works');
}
else {
alert('no workie');
}
https://jsfiddle.net/h3yf5r60/4/
使用以下代码段作为纯JS的示例:
var now = new Date();
var yesterday = new Date();
yesterday.setMonth(yesterday.getMonth() - 1);
if (now > yesterday) {
alert('it works');
}
else {
alert('no workie');
}