使用HTML和Javascript将字符串格式的日期与日期格式的当前日期进行比较

时间:2018-10-30 07:03:25

标签: javascript html

<html>
<head>
<script lang="Javascript">
function validateExpDate(){
    var expdate ="24-10-2018";
    var fields = expdate.split('-');
    var date = parseInt(fields[0]);
    var month = parseInt(fields[1]);
	var year = parseInt(fields[2]);
	var today = new Date();
    var dd = parseInt(today.getDate());
    var mm = parseInt(today.getMonth()+1); //January is 0!
    var yyyy = parseInt(today.getFullYear());
	if(year >= yyyy){
		if(month >= mm){
			if(date > dd){
				alert('Valid Expiry Date');
			}
		}	
	}else{
	alert('Invalid Expiry Date Entered!');
	}
}
</script>
</head>
<body onload="validateExpDate();">
</body>
</html>

我想将变量expdate中的日期与当前日期进行比较,并显示适当的消息。谁能找出问题并使其解决?

3 个答案:

答案 0 :(得分:0)

您的else指令属于外部if语句。在您的情况下,if语句返回true(2018> = 2018),因此程序将跳转到第一个if子句中的代码。从那时起,该程序将不再可以访问您的else语句。

您正在寻找这样的东西:

<html>
<head>
<script lang="Javascript">
function validateExpDate(){
    var expdate ="24-10-2018";
    var fields = expdate.split('-');
    var date = parseInt(fields[0]);
    var month = parseInt(fields[1]);
    var year = parseInt(fields[2]);
    var today = new Date();
    var dd = parseInt(today.getDate());
    var mm = parseInt(today.getMonth()+1); //January is 0!
    var yyyy = parseInt(today.getFullYear());
    if(year >= yyyy && month >= mm && date > dd)
    {
        alert('Valid Expiry Date');
    }
    else{
    alert('Invalid Expiry Date Entered!');
    }
}
</script>
</head>
<body onload="validateExpDate()">
</body>
</html>

所有条件都放在一个if子句中。通过使用AND运算符,该语句仅在所有条件为true时才返回true。如果其中之一为假,程序将进入else子句。

还可以直接在javascript中比较两个日期。 只需少一点代码...

<html>
    <head>
    <script lang="Javascript">
    function validateExpDate(){
        var expdate = new Date('2018-10-24');
        var today = new Date();
        if(expdate > today) {
            alert('Valid Expiry Date');
        }
        else {
            alert('Invalid Expiry Date Entered!');
        }
    }
    </script>
    </head>
    <body onload="validateExpDate()">
    </body>
</html>

答案 1 :(得分:0)

您没有处理日期和月份的else条件。您可以按照下面的方式编写代码,也可以根据需要在第一个&&循环中使用IF

if (year >= yyyy) {
                if (month >= mm) {
                    if (date > dd) {
                        alert('Valid Expiry Date');
                    } else {
                        alert('Invalid Expiry Date Entered!');
                    }
                }
                else {
                    alert('Invalid Expiry Date Entered!');
                }
            } else {
                alert('Invalid Expiry Date Entered!');
            }

答案 2 :(得分:0)

谢谢大家。我发现问题只是花括号。感谢您的回复。真的很感激。