Heim > Fragen und Antworten > Hauptteil
P粉5742689892023-08-21 15:03:33
尝试一下。
function getAge(dateString) { var today = new Date(); var birthDate = new Date(dateString); var age = today.getFullYear() - birthDate.getFullYear(); var m = today.getMonth() - birthDate.getMonth(); if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { age--; } return age; }
我相信你的代码中唯一看起来粗糙的地方就是substr
部分。
Fiddle:http://jsfiddle.net/codeandcloud/n33RJ/
P粉4781887862023-08-21 11:57:16
我会选择可读性:
function _calculateAge(birthday) { // birthday is a date var ageDifMs = Date.now() - birthday.getTime(); var ageDate = new Date(ageDifMs); // miliseconds from epoch return Math.abs(ageDate.getUTCFullYear() - 1970); }
免责声明:这个方法也存在精度问题,因此也不能完全信任。在某些年份、某些小时或夏令时(取决于时区)可能会有误差。
如果精度非常重要,我建议使用一个库来处理这个问题。此外,@Naveens post
可能是最准确的,因为它不依赖于时间。