比较两个不同年份的日期

时间:2016-12-20 12:51:03

标签: javascript date

我正在尝试比较两个日期,例如今天的日期(20/12/2016)和明年的日期(01/01/2017)。如果今年RenewalDate适用于22/12/2016,则代码可以正常运行。似乎只有明年的日期才能确定今天不会超过那个日期

var RenewalDate = new Date(result.RenewalDate);
var month = RenewalDate.getMonth()+1;
var year = RenewalDate.getFullYear();
if(day<10){
    day='0'+day
} 
if(month<10){
   month='0'+month
} 
var RenewalDate = day+'/'+month+'/'+year;
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0

var yyyy = today.getFullYear();
if(dd<10){
       dd='0'+dd
} 
if(mm<10){
      mm='0'+mm
} 
var today = dd+'/'+mm+'/'+yyyy;
if(today > RenewalDate)
{
   alert("Date is greater than today");
}
else
{
    alert("Date is less than today");
}

4 个答案:

答案 0 :(得分:3)

请勿将日期转换为字符串进行比较,因为它会进行string比较,而不是date比较。如果您这样做,即使它在同一年内处理22/11/2016大于20/12/2016

您只需使用today > renewalDatetoday.getTime() > renewalDate.getTime(),如下所示,

方法1

var renewalDate = new Date(2017, 0, 1);
var today = new Date();

if(today > renewalDate)
{
   alert("Date is greater than today");
}
else
{
    alert("Date is less than today");
}

方法2

    var renewalDate = new Date(2017, 0, 1);
    var today = new Date();

    if(today.getTime() > renewalDate.getTime())
    {
       alert("Date is greater than today");
    }
    else
    {
        alert("Date is less than today");
    }

注意:方法1和方法2也会这样做。

答案 1 :(得分:1)

为什么不使用moment.js

moment('2016-12-20').isAfter('2016-01-02', 'year'); // false
moment('2016-12-20').isAfter('2015-12-31', 'year'); // true

答案 2 :(得分:1)

以下是示例代码,而不是您正在做的事情,

var to = new Date(2016,12,12);
var from = new Date(2017,12,12);
if(to > from){
 alert('to is greater than from');
}else{
     alert('to is less than from');
}

我希望此示例代码能满足您的要求

答案 3 :(得分:-1)

从技术上讲,您要比较字符串而不是日期,比较任何两个日期对象,您将得到正确的结果或将其转换为时间戳date.getTime()(它是长号),然后比较您将得到正确的结果。