簡體   English   中英

比較格式為dd-MMM-yyyy的日期的驗證

[英]Compare Validation for dates of format dd-MMM-yyyy

我有兩個文本框。 一個包含開始日期,另一個包含結束日期。 兩個文本框均為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;
        }
    }

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

在這里使用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);

}

檢查文檔。

為了比較兩個日期,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
}

希望對您有幫助。

我認為您需要先將文本框的值轉換為Date然后才能進行比較。 否則,您將只是比較它們的字典順序。

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

嘗試類似的東西。

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;

   } 

} 

最后,我得到了解決方案的朋友...

我所做的是,我只是將日期解析為UTC 1970年1月1日00:00:00以來的毫秒數。 我已經解析了兩個日期並比較了這兩個值。

解決方案是:

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;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM