2016-06-21 76 views
-1

我已經非常廣泛地研究了這個問題,並且我找到了一些有用的信息,但是我一直無法解決我的問題。我所要做的就是解析一個日期並將它與另一個日期進行比較。似乎很簡單,對吧?以下是我已經試過:爲什麼我的日期比較在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

回答

0

你的功能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

0

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

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