日期比较出错

Date comparison getting error

本文关键字:出错 比较 日期      更新时间:2023-09-26

我们卡住了日期比较,我们尝试了下面的代码。EndDate 值与 2016 年 1 月 21 日有关,但在显示Fri Sep 01 2017 10:10:10 GMT+0530 (India Standard Time)的警报中,您能否分享我您的想法

var endDateVal = "21/01/2016 10:10:10".replace(/-/gi, "/");
alert(new Date(endDateVal));
if (new Date(endDateVal) > new Date()) {
    alert("Last end date should be minor than today");
}

小提琴

日期格式不正确。日期必须是符合 ISO 8601 或 IETF 的 RFC 2822 格式的日期,例如:

2016-01-21T10:10:10+05:30

要格式化您的日期,您可以执行以下操作:

var dateVars = "21/01/2016 10:10:10".match(/'d+/g);
var reformattedDate = dateVars[2] + '-' + dateVars[1] + '-' + dateVars[0] + 'T' + dateVars[3] + ':' + dateVars[4] + ':' + dateVars[5] + '+05:30';
new Date(reformattedDate);

首先,new Date("21/01/2016 10:10:10")返回Invalid Date 。Date 的默认格式为 mm/dd/yyyy 而不是 dd/mm/yyyy

其次,在比较日期时,您应该改用date.getTime()

下面是一个示例代码。

var endDateVal = "02/21/2016 10:10:10";
var d1 = new Date(endDateVal)
var d2 = new Date();
console.log(d1, d2)
if (+d1 > +d2) {
  alert("Last end date should be minor than today");
}

您需要将

日期/月份交换为01/21/2016 10:10:10

另外,我不确定您为什么要使用 .replace(/-/gi, "/");,因为这正在用您的日期没有任何-/替换-