我正试图从选择日期开始计时。来自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
。
任何帮助将不胜感激。
答案 0 :(得分:2)
您可以在将字符串解析为Date
时简单地交换格式$('[name="dateOfBirth"]').val().replace(/(\d{2}\/)(\d{2}\/)(\d{4})/,'$2$1$3'));
console.log(new Date('24/02/1992'.replace(/(\d{2}\/)(\d{2}\/)(\d{4})/, '$2$1$3')));
&#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)
构造函数