让出生日期是1983年8月2日,然后是那个日期之间的毫秒差异是:
var diff = new Date - new Date('1983-08-02');
天数的差异是(1秒= 1000毫秒,1小时= 60 * 60秒,1天= 24 * 1小时)
var diffdays = diff / 1000 / (60 * 60 * 24);
多年(因此,年龄)的差异变成(.25来说是为了成年):
var age = Math.floor(diffdays / 365.25);
现在尝试一下
diff = new Date('2011-08-01') - new Date('1983-08-02'); //=> 27
diff = new Date('2011-08-02') - new Date('1983-08-02'); //=> 28
diff = new Date('2012-08-02') - new Date('1983-08-02'); //=> 29
所以,你的javascript可以改写为:
var Bdate = new Date(date.split("-").reverse().join('-')),
age = Math.floor( ( (Cdate - Bdate) / 1000 / (60 * 60 * 24) ) / 365.25 );
[编辑]没有引起足够的重视. date.split(‘ – ‘)给出数组[dd,mm,yyyy],因此反转它会产生[yyyy,mm,dd].现在再次使用’ – ‘连接,结果是字符串’yyyy-mm-dd’,它是新Date的有效输入.