填写出生日期后的自动显示年龄,格式为YYYY-MM-DD

时间:2014-07-14 15:08:14

标签: javascript

其实我已在这里发帖了。它已经被这里的某个人解决了但是在我现在再试一次之后,它再次失败了。请帮忙。

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

}

2 个答案:

答案 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,做了更好的日期验证和更准确的年龄计算

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