出生计算的年龄(年/月/日)格式不起作用

时间:2017-01-09 14:09:48

标签: javascript jquery date datetime

我正试图从选择日期开始计时。来自bootstrap日期选择器,如果我使用mm/dd/yyyy代码工作正常,但如果格式为dd/mm/yyyy,如果我选择24/02/1992它会给我" NAN"。我的代码是什么问题。

我的代码是:

$('[name="dateOfBirth"]').change(function() {
   $('[name="age"]').val(getAge(new Date($('[name="dateOfBirth"]').val())));           
});

function getAge(birthDate) {
    var now = new Date();

    function isLeap(year) {
          return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
    }

    // days since the birthdate    
    var days = Math.floor((now.getTime() - birthDate.getTime())/1000/60/60/24);
    var age = 0;
    // iterate the years
    for (var y = birthDate.getFullYear(); y <= now.getFullYear(); y++){
        var daysInYear = isLeap(y) ? 366 : 365;
        if (days >= daysInYear){
            days -= daysInYear;
            age++;
            // increment the age only if there are available enough days for the year.
            }
     }
     return age;
}    

我使用dd/mm/yyyy格式从日期选择器中获取出生日期。 我应该更改什么才能获得超过12岁的年龄,如23/02/1992

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以在将字符串解析为Date

时简单地交换格式
$('[name="dateOfBirth"]').val().replace(/(\d{2}\/)(\d{2}\/)(\d{4})/,'$2$1$3'));

&#13;
&#13;
console.log(new Date('24/02/1992'.replace(/(\d{2}\/)(\d{2}\/)(\d{4})/, '$2$1$3')));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以从字符串创建日期:new Date($('[name="dateOfBirth"]').val())

根据https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date

使用Date(dateString)构造函数时,值必须是特定的format

尝试做,正如Arvid所说:修改日期以纠正格式。

或者提取年,月,日期并使用Date(year, month, date)构造函数