为什么我的日期比较在JavaScript中不起作用?

问题描述:

我已经非常广泛地研究了这个问题,并且我找到了一些有用的信息,但是我一直无法解决我的问题。我所要做的就是解析一个日期并将它与另一个日期进行比较。似乎很简单,对吧?以下是我已经试过:为什么我的日期比较在JavaScript中不起作用?

function getCurrentDate() { //this function simply returns today's date 
       var today = new Date(); 
       var dd = today.getDate(); 
       var mm = today.getMonth() + 1; 
       var yyyy = today.getFullYear(); 

       if (dd < 10) { 
        dd = '0' + dd 
       } 

       if (mm < 10) { 
        mm = '0' + mm 
       } 
       today = mm + '/' + dd + '/' + yyyy; 
       return today; 
} 

$("#TxtDate").blur(function() { 
      var projectDueDate = Date.parse($("#lblDueDate").val()); //parses the project due date label to create a date variable 
      var itemDueDate = new Date($("#TxtDate").val()); //parses the value the user entered into the due date box to create a date variable 
      var actualProjectDueDate = new Date(projectDueDate); 

      if (Date.parse(document.getElementById('TxtDate').value) > getCurrentDate()) { 
       alert("The date you entered precedes today's date. Please enter a valid date."); 
       $("#TxtDate").val() = ""; 
      } 
     }); 

if声明未在TxtDateblur功能工作。它不显示警报窗口,即使我输入的日期早于今天的日期。正如你所看到的,我尝试了一些不同的东西。有什么建议么?

+3

在处理日期时,所有*看起来都很简单。不是。使用库 - http://momentjs.com – Jamiec

+1

你正在比较一个日期到一个字符串... –

+0

顺便说一句,bith的答案是正确的,但就此而言,为什么要从'Date'转到'string'并返回到'日期“ - 你已经知道如何获得今天的日期作为日期对象(你在'getCurrentDate'中做过) – Jamiec

你的功能getCurrentDate返回一个string不是date object和你用date object比较它。所以你需要解析返回值getCurrentDate

if (Date.parse(document.getElementById('TxtDate').value) > Date.parse(getCurrentDate())) { 
    alert("The date you entered precedes today's date. Please enter a valid date."); 
    $("#TxtLeaveFrom").val() = ""; 
} 
+0

感谢您的帮助。你是对的;然而,似乎又出现了另一个问题。 Date.parse(document.getElementById('TxtDate').value'返回一个无法理解的值:'1465876800000'。你知道如何解决这个问题吗? – ic3man7019

+0

yes Date.parse返回类似这样的东西 – Mairaj

Date.parse()返回一个日期对象,而getCurrentDate()返回一个字符串。添加Date.parse()有太多:

if (Date.parse(document.getElementById('TxtDate').value) > Date.parse(getCurrentDate()))