计算同年内两个时间段的天数

计算同年时间段差
本文提供了一个JavaScript函数,用于计算同一自然年内两个日期之间的天数差。该方法首先验证输入的有效性,然后通过逐月累加天数的方式得出最终结果。

计算同年内两个时间段的天数,代码如下:


/***
* @description 通过开始时间和结束时间得到天数差值
* @param beginTime 开始时间,形式为:2012-01-01
* @param endTime 结束时间。 2012-05-07
* @return days  时间天数差值
* @author huanghui
* @date 2012-9-17
*/
function getTimeDifference(year,beginTime,endTime){
	var days=0;
	if(beginTime!='' && endTime!=''){
		var bArr = strToInt(beginTime.split('-'));
		var eArr = strToInt(endTime.split('-')); 
                if(bArr[0]>eArr[0] || (bArr[0]==eArr[0]&&bArr[1]>eArr[1])){
			alert('开始时间大于结束时间!');	
		}
                year = parseInt(year);
		if(bArr[0]==eArr[0] && bArr[0] == year){
			var month = eArr[1] - bArr[1];
			if(month==0){//计算月,算天数
				days = eArr[2]-bArr[2] +1;
			}else if(month>0){
				var bmothDays = getMonthDays(bArr[0], bArr[1]);
				days = bmothDays - bArr[2]+1;
				days += eArr[2];
				var ds =0;//中间的月份差值
				for(var i=1;i<month;i++){
					var m = bArr[1]+i;
					ds += getMonthDays(year,m);
				}
				days += ds;
			}
		}else{
                      alert('开始时间和结束时间不在同一年份里面!');
                }
	}else{
             alert('结束时间或开始时间不存在!');	
        }
	return days;
};
	
/**
* @description 通过年份和月份得到每月的天数
* @param year 年份
* @param month 月份
* @return mothDays  一个月多少天
* @author huanghui
* @date 2012-9-17
*/
function getMonthDays(year,month){
	year = parseInt(year);
	month = parseInt(month);
	//计算每月天数。
	var february =28;
	if((year%4==0&&year%100!=0)||year%400==0){  
		february=29;
	}
	var mothDays = 31;
	switch(month){
		case 2:mothDays=february;break;
		case 4:
		case 6:
		case 9:
		case 11:mothDays=30;break;
		default:mothDays=31;break;
	}	
	return mothDays;
}
/**
 * @description 将字符串数组转化为int类型数组
 				//'09' 转化为 9
 * @param strArr 字符串数组
 * @author huanghui
 * @date 2012-9-17 
 */
function strToInt(strArr){
	for(var i=0;i<strArr.length;i++){
		var arr = strArr[i];
		if(arr.indexOf('0')==0){
			arr = arr.substring(1,arr.length);
		}
		strArr[i]= parseInt(arr);
	}
	return strArr;
}



在js里面直接调用getTimeDifference(year,beginTime,endTime)方法即可!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值