Javascript 以月、日为单位计算年龄
我一直在使用以下代码,但对于JS,我是一个完全的初学者。我从后伊格索尼的代码中改编了这个,安吉拉的编辑使日期输入更加灵活 考虑到某人的出生日期,我该如何修改以月和日为单位报告其年龄Javascript 以月、日为单位计算年龄,javascript,Javascript,我一直在使用以下代码,但对于JS,我是一个完全的初学者。我从后伊格索尼的代码中改编了这个,安吉拉的编辑使日期输入更加灵活 考虑到某人的出生日期,我该如何修改以月和日为单位报告其年龄 function getAge(dateString) { var now = new Date(); var today = new Date(now.getYear(),now.getMonth(),now.getDate()); var yearNow = now.getYear();
function getAge(dateString) {
var now = new Date();
var today = new Date(now.getYear(),now.getMonth(),now.getDate());
var yearNow = now.getYear();
var monthNow = now.getMonth();
var dateNow = now.getDate();
var dob = new Date(dateString);
var yearDob = dob.getYear();
var monthDob = dob.getMonth();
var dateDob = dob.getDate();
var age = {};
var ageString = "";
var yearString = "";
var monthString = "";
var dayString = "";
yearAge = yearNow - yearDob;
if (monthNow >= monthDob)
var monthAge = monthNow - monthDob;
else {
yearAge--;
var monthAge = 12 + monthNow -monthDob;
}
if (dateNow >= dateDob)
var dateAge = dateNow - dateDob;
else {
monthAge--;
var dateAge = 31 + dateNow - dateDob;
if (monthAge < 0) {
monthAge = 11;
yearAge--;
}
}
age = {
years: yearAge,
months: monthAge,
days: dateAge
};
if ( age.years > 1 ) yearString = " years";
else yearString = " year";
if ( age.months> 1 ) monthString = " months";
else monthString = " month";
if ( age.days > 1 ) dayString = " days";
else dayString = " day";
if ( (age.years > 0) && (age.months > 0) && (age.days > 0) )
ageString = age.years + yearString + ", " + age.months + monthString + ", and " + age.days + dayString + " old.";
else if ( (age.years == 0) && (age.months == 0) && (age.days > 0) )
ageString = "Only " + age.days + dayString + " old!";
else if ( (age.years > 0) && (age.months == 0) && (age.days == 0) )
ageString = age.years + yearString + " old. Happy Birthday!!";
else if ( (age.years > 0) && (age.months > 0) && (age.days == 0) )
ageString = age.years + yearString + " and " + age.months + monthString + " old.";
else if ( (age.years == 0) && (age.months > 0) && (age.days > 0) )
ageString = age.months + monthString + " and " + age.days + dayString + " old.";
else if ( (age.years > 0) && (age.months == 0) && (age.days > 0) )
ageString = age.years + yearString + " and " + age.days + dayString + " old.";
else if ( (age.years == 0) && (age.months > 0) && (age.days == 0) )
ageString = age.months + monthString + " old.";
else ageString = "Oops! Could not calculate age!";
return ageString;
}
alert(getAge('09/09/1989'));
函数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=新日期(日期字符串);
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;
}
警报(getAge('09/09/1989'));
您应该基本上删除代码后面部分中对“年”的所有引用,然后像这样重新编写大型if/else部分。我只更改了第48行及以下部分:
var totMonths = age.months + 12 * age.years;
if ( totMonths > 1 ) monthString = " months";
else monthString = " month";
if ( age.days > 1 ) dayString = " days";
else dayString = " day";
if ( (totMonths == 0) && (age.days > 0) ) {
ageString = "Only " + age.days + dayString + " old!";
} else if ( (totMonths > 0) && (age.days == 0)) {
ageString = totMonths + monthString + " old.";
} else if ( (totMonths > 0) && (age.days > 0))
ageString = totMonths + monthString + " and " + age.days + dayString + " old.";
} else ageString = "Oops! Could not calculate age!";
实际上,您应该删除代码后面部分中对“年”的所有引用,然后像这样重新编写大型if/else部分。我只更改了第48行及以下部分:
var totMonths = age.months + 12 * age.years;
if ( totMonths > 1 ) monthString = " months";
else monthString = " month";
if ( age.days > 1 ) dayString = " days";
else dayString = " day";
if ( (totMonths == 0) && (age.days > 0) ) {
ageString = "Only " + age.days + dayString + " old!";
} else if ( (totMonths > 0) && (age.days == 0)) {
ageString = totMonths + monthString + " old.";
} else if ( (totMonths > 0) && (age.days > 0))
ageString = totMonths + monthString + " and " + age.days + dayString + " old.";
} else ageString = "Oops! Could not calculate age!";
试试这个:
var dob = new Date("1/1/2016");
var now = new Date();
var timeMiliseconds = Math.abs(now.getTime() - dob.getTime());
var days = Math.ceil(timeMiliseconds / (1000 * 3600 * 24));
var monthsElapsed = Math.ceil(timeMiliseconds / (1000 * 3600 * 24 * 30))
var daysElapsed = days % 30
alert(monthsElapsed);
alert(daysElapsed);
试试这个:
var dob = new Date("1/1/2016");
var now = new Date();
var timeMiliseconds = Math.abs(now.getTime() - dob.getTime());
var days = Math.ceil(timeMiliseconds / (1000 * 3600 * 24));
var monthsElapsed = Math.ceil(timeMiliseconds / (1000 * 3600 * 24 * 30))
var daysElapsed = days % 30
alert(monthsElapsed);
alert(daysElapsed);
请尝试一下,然后问我们为什么它不起作用。你是在要求它将年转换为月吗?(也就是说,不是“2年2个月3周”,而是“26个月3周”?)@JonathanM就像我提到的,我是JS的完全初学者。我找到了这段代码,幸运的是它与我所寻找的有点接近,并且实际工作了。@JohnBarton是的,这就是我想要它做的。我已经将代码放在JSBin中尝试编辑它,但是我得到了一些错误,关于变量已经被定义并在范围外使用,它不会运行。请尝试一些方法,然后问我们为什么它不起作用。你是在要求它把年转换成月吗?(也就是说,不是“2年2个月3周”,而是“26个月3周”?)@JonathanM就像我提到的,我是JS的完全初学者。我找到了这段代码,幸运的是它与我正在寻找的有点接近,并且实际工作了。@JohnBarton是的,这就是我想要它做的。我已经将代码放在JSBin中尝试编辑它,但是我得到了一些错误,关于变量已经被定义并在范围外使用,它不会运行。谢谢你的帮助,现在我至少有了一个开始的地方。谢谢你的帮助,现在我至少有了一个开始的地方。