这是我的代码,从这里采取:计算年龄在JavaScript
它如何继续与月和日,如:
用户生日是:2010/04/29
结果应该是这样的:2岁4个月5天。
function getAge(dateString) {
var today = new Date();
var birthDate = new Date(dateString);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
alert(getAge('2010/04/29'));
演示:http://jsfiddle.net/jFxb5/
试试这个:
js lang-js prettyprint-override">function getAge(dateString) {
var today = new Date();
var DOB = new Date(dateString);
var totalMonths = (today.getFullYear() - DOB.getFullYear()) * 12 + today.getMonth() - DOB.getMonth();
totalMonths += today.getDay() < DOB.getDay() ? -1 : 0;
var years = today.getFullYear() - DOB.getFullYear();
if (DOB.getMonth() > today.getMonth())
years = years - 1;
else if (DOB.getMonth() === today.getMonth())
if (DOB.getDate() > today.getDate())
years = years - 1;
var days;
var months;
if (DOB.getDate() > today.getDate()) {
months = (totalMonths % 12);
if (months == 0)
months = 11;
var x = today.getMonth();
switch (x) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: {
var a = DOB.getDate() - today.getDate();
days = 31 - a;
break;
}
default: {
var a = DOB.getDate() - today.getDate();
days = 30 - a;
break;
}
}
}
else {
days = today.getDate() - DOB.getDate();
if (DOB.getMonth() === today.getMonth())
months = (totalMonths % 12);
else
months = (totalMonths % 12) + 1;
}
var age = years + ' years ' + months + ' months ' + days + ' days';
return age;
}
console.log(getAge("2010/02/28"));
console.log(getAge("2010/03/01"));
按年、月和日计算年龄。以任何有效的日期字符串格式输入日期,如“1952/09/28”、“1952年9月29日”、“1952年9月28日”等。
接受两个参数-出生日期和计算年龄的日期。你可以把第二个论点留到今天的日期。返回具有年、月和日属性的对象。
使用一年365.2425天的太阳年值。
@参数born Date出生日期。@参数ageAtDate计算年龄的日期。今天的日期无。@返回{{年:数,月:数,日:数}}
function getAge(birthDate, ageAtDate) {
var daysInMonth = 30.436875; // Days in a month on average.
var dob = new Date(birthDate);
var aad;
if (!ageAtDate) aad = new Date();
else aad = new Date(ageAtDate);
var yearAad = aad.getFullYear();
var yearDob = dob.getFullYear();
var years = yearAad - yearDob; // Get age in years.
dob.setFullYear(yearAad); // Set birthday for this year.
var aadMillis = aad.getTime();
var dobMillis = dob.getTime();
if (aadMillis < dobMillis) {
--years;
dob.setFullYear(yearAad - 1); // Set to previous year's birthday
dobMillis = dob.getTime();
}
var days = (aadMillis - dobMillis) / 86400000;
var monthsDec = days / daysInMonth; // Months with remainder.
var months = Math.floor(monthsDec); // Remove fraction from month.
days = Math.floor(daysInMonth * (monthsDec - months));
return {years: years, months: months, days: days};
}
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.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 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'));
演示这里
本文向大家介绍php计算年龄精准到年月日,包括了php计算年龄精准到年月日的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php计算年龄精准到年月日的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家学习php程序设计有所帮助。
问题内容: 考虑到他们的DOB格式为dd / mm / yyyy,我正在寻找一种计算人的年龄的方法。 我一直在使用以下功能,该功能在几个月内都可以正常工作,直到某种故障导致while循环永远不会结束并且使整个站点陷入瘫痪。由于每天有近100,000个DOB多次通过此功能,因此很难确定造成此问题的原因。 有人有更可靠的年龄计算方法吗? 编辑:此函数的某些时间似乎可以正常工作,但对于14年9月14日的
我正在开发一个程序,它采用开始日期和结束日期,并返回年、月和日的不同值。每个类别都有自己的代码部分,这是我一直在使用的代码,到目前为止,它一直是半精确的,直到几天(有时是几个月。我甚至不想在这一点上愚弄闰年) Ex Start:04/10/2000 End:04/10/2006应该给我6年零个月零天。 年份代码: 月份代码: 天数代码:我已经尝试了多个版本,但没有太大的成功,例如,我可以计算天数之
问题内容: 我在sql中有一个用户表,他们每个都有生日。我想将他们的出生日期转换为他们的年龄(仅年),例如日期:年龄:14,并将更改为年龄: 在这里,我想显示用户的日期: 问题答案: 功能:, MySQL > = 5.0.0 功能:,
我是JS的初学者。我可以用下面的代码计算年龄。这段代码多年来一直运行良好。如果我把日期放在任何一个月的12(例如,1950年12月14日)之后,那么它显示的是年份。现在我想展示每个人生日的年、月、日。有人能帮我吗?提前谢谢。
问题内容: 如果我的出生日期以表格的形式存储在表格中,并且从当前日期中减去该日期,那么返回的日期格式是什么? 如何使用这种返回的格式来计算某人的年龄? 问题答案: 如果该值存储为DATETIME数据类型: 考虑leap年时不太精确: