比较日期格式为dd MMM yyyy的验证

Compare Validation for dates of format dd-MMM-yyyy

本文关键字:yyyy 验证 MMM dd 日期 格式 比较      更新时间:2023-09-26

我有两个文本框。一个包含开始日期,另一个包含结束日期。两个文本框均为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
}

希望它能帮助你。

最后,我得到了解决方案Friends。。。

我所做的只是将日期解析为自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;
        }
    }

我认为您需要将文本框的值转换为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;
   } 
}