计算同年内两个时间段的天数,代码如下:
/***
* @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;
}
计算同年时间段差
本文提供了一个JavaScript函数,用于计算同一自然年内两个日期之间的天数差。该方法首先验证输入的有效性,然后通过逐月累加天数的方式得出最终结果。
59

被折叠的 条评论
为什么被折叠?



