其实我已在这里发帖了。它已经被这里的某个人解决了但是在我现在再试一次之后,它再次失败了。请帮忙。
function ageCount() {
var date1 = new Date();
var dob = document.getElementById("dob").value;
var date2 = new Date(dob);
var pattern = /^\d{4}-\d{1,2}-\d{1,2}$/;
//Regex to validate date format (dd/mm/yyyy)
if (pattern.test(dob)) {
var y1 = date1.getFullYear();
//getting current year
var y2 = date2.getFullYear();
//getting dob year
var age = y1 - y2;
//calculating age
document.getElementById("ageId").value = age;
document.getElementById("ageId").focus ();
return true;
} else {
alert("Invalid date format. Please Input in (dd/mm/yyyy) format!");
return false;
}
}
答案 0 :(得分:0)
我尝试使用你的代码,对我来说它看起来像是在工作。我把它放在jsFiddle中,它对我来说很合适。
虽然年龄计算相当粗糙,但类似下面的代码会计算出更严重的年龄,因为今年仍然生日的人将会有一个年龄,表明他将在下一个生日。
这样的事情会计算年龄:
function calculateAge(date1 , date2) {
var ageDifs = date1 - date2.getTime();
var ageDate = new Date(ageDifs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
您的错误消息日期格式无效。请输入(dd / mm / yyyy)格式!与输入格式 yyyy-mm-dd不匹配。您想使用哪一种?
我为
创建了一个扩展jsFiddle如果你需要dd / MM / yyyy 我创建了一个新的jsFiddle,做了更好的日期验证和更准确的年龄计算
答案 1 :(得分:0)
您的功能非常完美,只需更改正则表达式: -
所以而不是
var pattern = /^\d{4}-\d{1,2}-\d{1,2}$/;
//Regex to validate date format (dd/mm/yyyy)
if (pattern.test(dob)) {
只写
if (dob.match(/^(\d{1,2})-(\d{1,2})-(\d{4})$/)) {
,日期格式为
dd-mm-yyyy