JS计算宝宝出生后的年龄,两种表示方式,精确到秒哦

2015-09-18 15:12:28 作者:芒果酷 JS, 前端, 计算, 宝宝, 年龄

有了孩子之后,对小宝宝的事情会不刻意的增加很多关注,这可能就是做父亲的责任吧。

崽崽的周岁开始倒计时了,但是日子长了,算起来就比较费劲,也容易算错。本想依靠百度,没想到花了一晚竟找不到一款,能够计算宝宝年龄比较准确的软件!失望之余,我决定在工作之余写一个这样的计算小功能。于是就有了以下内容:

新鲜出炉!代码还有很多地方需要优化,甚至还有bug,但是仍然迫不及待的贴出来,跟网友们分享。

第一个计算方式,计算出宝宝从出生到现在的天数、时、分、秒:

//获取出生天数、时、分、秒
function getGrowTime(birthday)
{
	var currentTime = Date.parse(new Date());
	var myTime = new Date(birthday);
	var myTimeStamp = Date.parse(myTime);
	var gapSec = (currentTime - myTimeStamp)/1000;
	var day = 0;
	var hour = 0;
	var min = 0;
	var sec = 0;
	if(gapSec/(60*60*24) > 0)
	{
		day = (gapSec-gapSec%(60*60*24))/(60*60*24);
		gapSec = gapSec%(60*60*24);
		if((gapSec/3600) > 0)
		{
			hour = (gapSec-gapSec%3600)/3600;
			gapSec = gapSec%3600;
			if((gapSec/60) > 0)
			{
				min = (gapSec-gapSec%60)/60;
				sec = gapSec%60;
			} else
			{
				sec = gapSec;
			}
		} else
		{
			if((gapSec/60) > 0)
			{
				min = (gapSec-gapSec%60)/60;
				sec = gapSec%60;
			} else
			{
				sec = gapSec;
			}
		}
	} else
	{
		if((gapSec/3600) > 0)
		{
			hour = (gapSec-gapSec%3600)/3600;
			gapSec = gapSec%3600;
			if((gapSec/60) > 0)
			{
				min = (gapSec-gapSec%60)/60;
				sec = gapSec%60;
			} else
			{
				sec = gapSec;
			}
		} else
		{
			if((gapSec/60) > 0)
			{
				min = (gapSec-gapSec%60)/60;
				sec = gapSec%60;
			} else
			{
				sec = gapSec;
			}
		}
	}
	var dateStr = (day<10? ("0"+day): day)+"天 " + 
				  (hour<10? ("0"+hour): hour)+"时 " + 
				  (min<10? ("0"+min): min)+"分 " + 
				  (sec<10? ("0"+sec): sec)+"秒";
	return dateStr;
}

第二个计算方式,计算宝宝从出生到现在的周岁、月、天、时、分、秒,这个很常用:

//获取出生年龄,周岁、月、天、时、分、秒
function getGrowAge(birthday)
{
	var now = new Date();
	var year = now.getFullYear();
	var month = now.getMonth() + 1;
	var day = now.getDate();
	var hour = now.getHours();
	var minute = now.getMinutes();
	var second = now.getSeconds();
	
	var myDate = new Date(birthday);
	var myYear = myDate.getFullYear();
	var myMonth = myDate.getMonth() + 1;
	var myDay = myDate.getDate();
	var myHour = myDate.getHours();
	var myMinute = myDate.getMinutes();
	var mySecond = myDate.getSeconds();
	
	var gapSecond = second - mySecond;
	if(gapSecond < 0)
	{
		minute -= 1;
		gapSecond = 60 - mySecond + second;
	}
	var gapMinute = minute - myMinute;
	if(gapMinute < 0)
	{
		hour -= 1;
		gapMinute = 60 - myMinute + minute;
	}
	var gapHour = hour - myHour;
	if(gapHour < 0)
	{
		day -= 1;
		gapHour = 24 - myHour + hour;
	}
	var gapDay = day - myDay;
	if(gapDay < 0)
	{
		month -= 1;
		gapDay = getDaysOfMonth(birthday) - myDay + day;
	}
	var gapMonth = month - myMonth;
	if(gapMonth < 0)
	{
		year -= 1;
		gapMonth = 12 - myMonth + month;
	}
	var gapYear = year - myYear;
	if(gapYear < 0)
	{
		gapYear = 0;
	}
	
	var dateStr = gapYear+"岁 " + 
				  (gapMonth<10? ("0"+gapMonth): gapMonth)+"月 " + 
				  (gapDay<10? ("0"+gapDay): gapDay)+"天 " + 
				  (gapHour<10? ("0"+gapHour): gapHour)+"时 " + 
				  (gapMinute<10? ("0"+gapMinute): gapMinute)+"分 " + 
				  (gapSecond<10? ("0"+gapSecond): gapSecond)+"秒";
	return dateStr;
}

还有两个计算所须的方法:

//获取当月的天数
function getDaysOfMonth(dateStr)
{	
	var date = new Date(dateStr);
	var year = date.getFullYear();
	var mouth = date.getMonth() + 1;
	var day = 0;

	if(mouth == 2)
	{
		day= isLeapYear(year) ? 29 : 28;
	} else if(mouth == 1 || mouth == 3 || mouth == 5 || 
			  mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12)
	{
		day= 31;
	} else
	{
		day= 30;
	}
	return day;
}

//判断是否为闰年
function isLeapYear(year)
{
	return (year%4==0 && year%100!=0)||(year%400==0);
}
文章到此结束,有不对的地方请及时指正!

例子测试地址:http://www.wankaixin.net,欢迎使用!

© hanhaisha.com. All Rights Reserved 湘ICP备15009704号-1

梦里不知岁月匆、梦醒不知韶华过