将日期与 Javascript 进行比较不起作用
Comparing Dates with Javascript does not work
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!");
}
您不是在比较整数或数字 format
returns 字符串。
为什么不使用 moment.js 库中的 isAfter
内置方法来比较两个 "moments"。
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!");
}
您正在比较字符串,因为您在比较之前格式化日期。
这是一个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');
}
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!");
}
您不是在比较整数或数字 format
returns 字符串。
为什么不使用 moment.js 库中的 isAfter
内置方法来比较两个 "moments"。
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!");
}
您正在比较字符串,因为您在比较之前格式化日期。
这是一个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');
}