我正在尝试比较两个日期,例如今天的日期(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");
}
答案 0 :(得分:3)
请勿将日期转换为字符串进行比较,因为它会进行string
比较,而不是date
比较。如果您这样做,即使它在同一年内处理22/11/2016
大于20/12/2016
。
您只需使用today > renewalDate
或today.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()
(它是长号),然后比较您将得到正确的结果。