以月、天为单位计算年龄
Calculating age in months, days
我一直在使用以下代码,但对于JS来说,我是一个完全的初学者。我在这里根据ygssoni的代码进行了修改,并通过Angela的编辑进行了更灵活的日期输入。
考虑到某人的出生日期,我该如何修改它,以报告他们当时的年龄(以月和天为单位)?
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'));
您应该基本上删除代码后面部分对"years"的所有引用,并像jsFiddle一样重新编写大型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);
相关文章:
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 如何将datetime转换为以毫秒为单位的epoch时间javascript
- 每小时倒计时一次,但以30分钟为单位
- 以天为单位计算年龄-Javascript
- 是否可以使用javascript获取以em为单位的窗口宽度
- 以周为单位计算日期差异(Javascript)
- 以 JS 为单位计算数组中的对象数
- 以时刻为单位计算 ISO 时差
- 使用 snap SVG,如何以像素为单位计算 SVG 文件的整个路径
- 如何在Microsoft CRM 2011中根据出生日期计算年龄(以年和月为单位)
- 计算两个给定时间的以毫秒为单位的时间差;DD/MM/YYYY HH:MM:ss:ms”;javascript格式
- 用JavaScript计算时间跨度(以年、月和天为单位)
- Javascript mobile-根据屏幕尺寸以像素为单位计算元素尺寸
- 使用jQuery和javascript计算两次之间的差异,并以分钟为单位返回
- 以分钟为单位计算两个时间之间的差异
- 以月为单位计算当前年龄
- 计算ImageData对象的大小(以[字节]为单位)
- 以月、天为单位计算年龄
- 计算鼠标移动角度(以度为单位)
- 以月为单位计算给定日期范围内的天数,使用momentjs计算天数