我只想在DOB的帮助下计算年龄

时间:2015-04-20 05:36:40

标签: javascript json

我使用这个`

从json var date=data.dob;获得DOB
var today = new Date(86400000);
var date=data.dob;          
var timeDiff = Math.abs(today - date);  
rangeOneMin1 = parseInt(timeDiff);
var age1 = Math.ceil(rangeOneMin1 / (1000 * 3600 * 24)) / 365;

通过在age1中应用上述代码我正在获取NaN请帮助,如果您想要更多内容请告诉我

4 个答案:

答案 0 :(得分:3)

首先,var today = new Date(86400000);今天不是,但很久以前。口译员甚至不打算计算这个日期,所以它是最小的可能日期:

Fri Jan 02 1970 01:00:00 GMT+0100 (CET)

要获取今天的日期对象,只需构造不带参数的Date。然后,您还需要为Date字符串日期创建新的dob对象。

还有一件事,你不需要parseInt,因为在算术Date操作期间隐式类型转换为数字,因此两个-对象之间的差异将是整数值。

最后,您可能也希望将/ 375置于Math.ceil之下。

结果将如下所示:

var today = new Date();
var date = new Date(data.dob);
var timeDiff = Math.abs(today - date);
var age1 = Math.ceil(timeDiff / (1000 * 3600 * 24) / 365);

答案 1 :(得分:2)

考虑使用var date= data.dob的日期,'08/25/1990'var difMS = Date.now() - (new Date(date).getTime()); //Difference in milliseconds from dob to current date var refDate = new Date(difMS); //Reference date console.log(Math.abs(refDate.getUTCFullYear() - 1970)); //years passed till 1970 形式的字符串,您可以执行以下操作来获取年龄

{{1}}

FIDDLE

答案 2 :(得分:1)

嘿如果你想计算与年,月和日的确切差异,那么下面将帮助你:

    var today = new Date();
var date = new Date('07/04/1985');

var year=today.getFullYear()-date.getFullYear(); 

var month = today.getMonth() - date.getMonth();
if (month < 0 || (month === 0 && today.getDate() < date.getDate())) {
year--;
month=month+12;     
}

var days = today.getDate() - date.getDate();    

if (days < 0 || (days === 0 && today.getDate() < date.getDate())) {
month--;
days=days+30;       
}

alert(year+"---"+month+"---"+days)

您需要更多代码来计算天数,因为我已将30天作为标准,有些月份需要31天或29天,因此您需要检查闰年和一个月中的31天,您将获得确切的日期差异

由于

答案 3 :(得分:0)

Javascript中不允许使用直接日期差异,因此您获得了NaN 而是使用时间来获取日期差异,然后将其转换为年份 请找到相同的

下面的功能
function GetAge() {
var one_year=(1000*60*60*24);
var birthDate = new Date(2010,01,01)
var today = new Date();
var todayTime = today.getTime();
var birthDateTime=birthDate.getTime();
var difference_ms = todayTime-birthDateTime;
return Math.round((difference_ms/one_year)/365);
}