javascript-年龄计算

javascript-年龄计算,javascript,Javascript,有两次约会 首先是生日 第二个是一个日期,用于计算从该日期算起的年龄 最好的方法是什么。最好的方法可能是将日期转换为时间戳,如果日期是字符串,则可能使用parse()。然后用newdate(毫秒) 但是,对于1970年1月1日之前的日期来说,这可能不太准确,因此,减去天数、月份等的替代方法。。。单独比较合适。使用将日期转换为历元后的毫秒,然后减去值并将结果转换回年: function calculateAge (birthDate, otherDate) { birthDate = ne

有两次约会

首先是生日 第二个是一个日期,用于计算从该日期算起的年龄


最好的方法是什么。

最好的方法可能是将日期转换为时间戳,如果日期是字符串,则可能使用
parse()
。然后用
newdate(毫秒)


但是,对于1970年1月1日之前的日期来说,这可能不太准确,因此,减去天数、月份等的替代方法。。。单独比较合适。

使用将日期转换为历元后的毫秒,然后减去值并将结果转换回年:

function calculateAge (birthDate, otherDate) {
    birthDate = new Date(birthDate);
    otherDate = new Date(otherDate);

    var years = (otherDate.getFullYear() - birthDate.getFullYear());

    if (otherDate.getMonth() < birthDate.getMonth() || 
        otherDate.getMonth() == birthDate.getMonth() && otherDate.getDate() < birthDate.getDate()) {
        years--;
    }

    return years;
}
const MS_PER_YEAR = 1000 * 60 * 60 * 24 * 365.2425;
var years = Math.floor((dateNow.getTime() - dateThen.getTime()) / MS_PER_YEARS);
这里有一个方法:

function getAge(d1, d2){
    d2 = d2 || new Date();
    var diff = d2.getTime() - d1.getTime();
    return Math.floor(diff / (1000 * 60 * 60 * 24 * 365.25));
}
console.log( getAge(new Date(1978, 10, 3)) );
小心这个月。Javascript从0开始计算它们。
1978,10,3
表示1978年11月3日

var birth = new Date('07/11/2003');
var check = new Date();

var milliDay = 1000 * 60 * 60 * 24; // a day in milliseconds;


var ageInDays = (check - birth) / milliDay;

var ageInYears =  Math.floor(ageInDays / 365 );

示例

如果您在一个大型Javascript项目中,您可能[使用|需要使用]一个框架

有了,您就有了一个和一个可以满足您需要的


它甚至

我修改了麦克风的响应,以允许今天是用户的生日。不同的是,您正在检查的年龄应设置为当天午夜,和/或当前日期应设置为23:59:59。例如,如果用户现在是18岁,则返回18岁

function getAge(d1){
    var now = new Date();
    var d2 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);
    var diff = d2.getTime() - d1.getTime();
    return Math.floor(diff / (1000 * 60 * 60 * 24 * 365.25));
}
console.log(getAge(new Date(1992, 10, 17, 0, 0, 0)));
函数getAge(日期字符串){
var now=新日期();
var today=新日期(now.getYear()、now.getMonth()、now.getDate());
var dearneow=now.getYear();
var monthNow=now.getMonth();
var dateNow=now.getDate();
var dob=新日期(dateString.substring(6,10)),
dateString.substring(0,2)-1,
dateString.substring(3,5)
);
var yearDob=dob.getYear();
var monthDob=dob.getMonth();
var dateDob=dob.getDate();
变量年龄={};
var ageString=“”;
var yearString=“”;
var monthString=“”;
var dayString=“”;
yearAge=earHow-yearDob;
如果(monthNow>=monthDob)
var monthAge=monthNow-monthDob;
否则{
岁--;
var monthAge=12+monthNow-monthDob;
}
如果(dateNow>=dateDob)
var dateAge=dateNow-dateDob;
否则{
蒙太奇--;
var dateAge=31+dateNow-dateDob;
如果(蒙太奇<0){
monthAge=11;
岁--;
}
}
年龄={
年:岁,
月份:蒙太奇,
日期:日期
};
如果(age.years>1)yearString=“years”;
else yearString=“年”;
如果(年龄月数>1)monthString=“月数”;
else monthString=“month”;
如果(age.days>1)dayString=“days”;
else dayString=“day”;
如果((年龄年>0)和&(年龄月>0)和&(年龄日>0))
ageString=age.years+yearString+”、“+age.monthString+monthString+”和“+age.days+dayString+”旧。“;
如果((age.years==0)和&(age.months==0)和&(age.days>0))
ageString=“仅”+age.days+dayString+“old!”;
如果((age.years>0)和&(age.months==0)和&(age.days==0))
ageString=age.years+yearString+“old.Happy Birth!!”;
如果((年龄.年>0)和&&(年龄.月>0)和&&(年龄.天==0))
ageString=age.years+yearString+”和“+age.monthString+monthString+”旧。“;
如果((age.years==0)和(&&(age.month>0)和(&(age.days>0))
ageString=age.monthString+monthString+”和“+age.days+dayString+”旧。“;
如果((年龄.年>0)和&(年龄.月==0)和&(年龄.天>0))发生其他情况
ageString=age.years+yearString+”和“+age.days+dayString+”旧。“;
如果((age.years==0)和(&&(age.months>0)和(&(age.days==0))发生其他情况
ageString=age.months+monthString+“旧。”;
else ageString=“哎呀!无法计算年龄!”;
返回ageString;
}
//使用jQuery调用getAge()函数并更新页面。。。
$(文档).ready(函数(){
$(“#提交日期”)。单击(函数(e){
e、 预防默认值();
$(“#age”).html(getAge($($(“input#date”).val());
});
});
HTML是
日期(MM/DD/YYYY):计算年龄

年龄:7岁1个月15天

function getAge(dateOfBirth, tillDate) {
    var dob = new Date(dateOfBirth);
    var endDt = new Date(tillDate) || new Date();
    return new Date(endDt.getTime() - dob.getTime()).getUTCFullYear() - 1970;
}

示例:
console.log(getAge('1/1/2000','1/1/2016');//格式:MM/DD/YYYY

获取按本年计算的年龄

calculateExp(birthDate) {
    birthDate = new Date(birthDate);
    var now = new Date();
    otherDate = new Date(now.getFullYear(),now.getMonth(),now.getDate());
    var years = (otherDate.getFullYear() - birthDate.getFullYear() );


    if (otherDate.getMonth() < birthDate.getMonth() || otherDate.getMonth() == birthDate.getMonth() && otherDate.getDate() < birthDate.getDate()) {
        years--;
    }

    return years;
}
calculateExp(生日){
生日=新日期(生日);
var now=新日期();
otherDate=新日期(now.getFullYear()、now.getMonth()、now.getDate());
变量years=(otherDate.getFullYear()-birthDate.getFullYear());
如果(otherDate.getMonth()
下面是一个使用矩.js的例子,它现在非常常见。只是把这个答案加在许多其他答案中

var banner=$(“#banner消息”)
变量按钮=$(“按钮”)
//句柄单击并添加类
按钮。打开(“单击”,函数(){
var inputValue=$(“#txtInput”).val();
var age=parseInt(矩().diff(inputValue,'years',true));
$(“#spantext”).html(年龄+年);
})
正文{
背景:#20262E;
填充:20px;
字体系列:Helvetica;
}
#横幅信息{
背景:#fff;
边界半径:4px;
填充:20px;
文本对齐:居中;
过渡:均为0.2s;
保证金:0自动;
宽度:300px;
}
钮扣{
背景:#0084ff;
边界:无;
边界半径:5px;
填充:8px 14px;
字体大小:15px;
颜色:#fff;
}
#banner-message.alt{
背景:#0084ff;
颜色:#fff;
边缘顶端:40px;
宽度:200px;
}
#banner-message.alt按钮{
背景:#fff;
颜色:#000;
}

输入日期:

年龄:
计算年龄


此句柄闰年用例也:

const getAgeFromBirthDate=(年、月、日)=>{
const date=新日期();
date.setFullYear(date.getFullYear()-year);
日期。设定月份(d
function getAge(dateOfBirth, tillDate) {
    var dob = new Date(dateOfBirth);
    var endDt = new Date(tillDate) || new Date();
    return new Date(endDt.getTime() - dob.getTime()).getUTCFullYear() - 1970;
}
calculateExp(birthDate) {
    birthDate = new Date(birthDate);
    var now = new Date();
    otherDate = new Date(now.getFullYear(),now.getMonth(),now.getDate());
    var years = (otherDate.getFullYear() - birthDate.getFullYear() );


    if (otherDate.getMonth() < birthDate.getMonth() || otherDate.getMonth() == birthDate.getMonth() && otherDate.getDate() < birthDate.getDate()) {
        years--;
    }

    return years;
}
moment(specificDate).diff(moment(birthDate), 'years');