日期验证

时间:2010-12-31 07:17:05

标签: c# asp.net javascript

我已经使用javascript编写了一个函数,用于验证从日历选择的日期到文本框,并使用当前日期。而且我没有得到正确的结果。文本框中显示的日期格式为“01-Oct-2010”。我创建的函数如下:

function CheckDate() {
    var today = new Date();
    var startDate = document.getElementById("<%=txtStartDate.ClientID %>").value;
    var endDate = document.getElementById("<%=txtEndDate.ClientID %>").value;

    if (Date.parse(endDate) >= today) {
        alert("End Date should not be greater than Today");
    }

    return true;
}

2 个答案:

答案 0 :(得分:2)

var myDt=new Date(); 
myDOB = document.getElementById('dateField').value.split('-');
myDate = myDOB[0];
myMonth= getMonthInDigit(myDOB[1]);
myYear = myDOB[2];
var now = new Date();
myDt.setFullYear(myYear,myMonth,myDate); //here year, month, date value should be parsed from the value u get
var diff = (now.getTime() - myDt.getTime()) 
if(diff < 0){ 
  alert("End Date should not be greater than Today"); 
}

您可以使用上面的javascript代码。

注意:创建getMonthInDigit函数,该函数根据需要以数字形式返回值。

答案 1 :(得分:1)

  1. 删除破折号
  2. 测试today.getTime(),因为Date.parse返回时间戳,而不是日期对象
  3. 只需更改

    if (Date.parse(endDate) >= today) {
    

    代表

    if (Date.parse(endDate.replace(/-/g," ")) >= today.getTime()) {
    

    您可能想要标准化日期,因为时间戳可能比创建日期时大几毫秒:

    var endTime = new Date(Date.parse(endDate.replace(/-/g," ")).setHours(0,0,0,0).getTime();
    var today = new Date().setHours(0,0,0,0).getTime();
    if (endTime > today) {