2013-07-08 28 views
1

我有兩個文本框。一個包含開始日期,另一個包含結束日期。這兩個文本框都是dd-MMM-yyyy日期格式。我的要求是比較這兩個日期,如果To date小於From日期,我必須拋出一個異常(如果To date < than From Date),我不能繼續進一步操作。比較日期格式dd-MMM-yyyy的有效期:

我已經使用了比較驗證程序,但它不起作用。 所以我嘗試使用java腳本來進行驗證,但它在一些日子裏不工作。

我寫的腳本:

function ValidateDate() { 
     var fromdate = document.getElementById("txtStartDate"); 
     var todate = document.getElementById("txtEndDate"); 

     var startDate = fromdate.value; 
     var endDate = todate.value; 


     if (endDate < startDate) { 
      alert("Please ensure that the End Date is greater than or equal to the Start Date."); 
      return false; 
     } 
    } 

請你的任何一個提供我一個解決方案。提前致謝。

+0

對於什麼天不工作?有沒有一種模式?請提供例子。 – Basuro

回答

0

最後,我得到了解決朋友...

我所做的就是我剛纔分析的日期,以毫秒爲單位自1970年1月1日00:00:00 UTC。我已經解析了兩個日期,並比較這兩個值..

它的解決方案是:

function ValidateDate() { 
     var fromdate = document.getElementById("txtFromDate"); 
     var todate = document.getElementById("txtToDate"); 
     var endDate = todate.value; 
     var startDate = fromdate.value; 

     /* Convert the date 01-Jan-1991 to Jan 1, 1991 */ 

     var splitdate = startDate.split("-"); 
     var dt1 = splitdate[1] + " " + splitdate[0] + ", " + splitdate[2]; 
     var splitdate = endDate.split("-"); 
     var dt2 = splitdate[1] + " " + splitdate[0] + ", " + splitdate[2]; 

     var newStartDate = Date.parse(dt1); //Parse the date to milliseconds since January 1, 1970, 00:00:00 UTC 
     var newEndDate = Date.parse(dt2); 

     if (newStartDate > newEndDate) { 
      alert("Please ensure that the End Date is greater than or equal to the Start Date."); 
      return false; 
     } 
    } 
0

我假設您需要將文本框的值轉換爲Date,然後才能比較它們。否則,你只是比較他們的字典順序。

var startDate = Date.parse(fromdate.value); 
var endDate = Date.parse(todate.value); 
+0

我曾試過這個..但它不起作用.. –

0

嘗試類似的東西。

function CompareDates(str1,str2) 

{ 

    if(str1 == "") 

     return false; 

    var dt1 = parseInt(str1.substring(0,2),10); 

    var mon1 = parseInt(str1.substring(3,5),10); 

    var yr1 = parseInt(str1.substring(6,10),10); 

    var dt2 = parseInt(str2.substring(0,2),10); 

    var mon2 = parseInt(str2.substring(3,5),10); 

    var yr2 = parseInt(str2.substring(6,10),10); 

    mon1 = mon1 -1 ; 

    mon2 = mon2 -1 ; 

    var date1 = new Date(yr1, mon1, dt1); 

    var date2 = new Date(yr2, mon2, dt2); 



    if(date2 >= date1) 

    { 

     return false; 

    } 

    else 

    { 

     return true; 

    } 

} 
1

在這裏使用jquery會容易很多。

var fromdate = document.getElementById("txtStartDate"); 
    var todate = document.getElementById("txtEndDate"); 

if ($.datepicker.parseDate('dd/mm/yy', fromdate) > $.datepicker.parseDate('dd/mm/yy', todate)) { 

     alert(fromdate+ 'is greater than ' + todate); 

} 

檢查THIS紀錄。

1

要比較兩個日期,c#提供了一個方法來比較它們。 DateTime.Compare。它返回一個int值來檢查第一個是否比第二個更早,更晚或更晚。

DateTime date1 = new DateTime(2013, 8, 1, 0, 0, 0); 
DateTime date2 = new DateTime(2013, 8, 1, 12, 0, 0); 
int result = DateTime.Compare(date1, date2); 

if (result < 0) 
{ 
    // date1 is earlier than date2; 
} 
else if (result == 0) 
{ 
    // date1 is the same time as date2 
} 
else 
{ 
    // date1 is later than date2 
} 

希望它可以幫助你。

+0

是的,你是正確的。但我想在客戶端做到這一點。 –

+0

如果你想用javascript來做,你可以使用Date對象。您可以將它們比較爲日期,或者使用「getTime」方法以毫秒爲單位獲取時間,並將它們與整數進行比較。 http://www.w3schools.com/jsref/jsref_obj_date.asp – superarce

+0

謝謝superarce !!!我做了同樣的事情。我也發佈了我的答案。 –