请教一个关于js日期的问题,谢谢帮忙
我想请教下,为什么下面的判断日期大小的代码,将日期格式2014-01-01改为类似2014-1-1的时候,计算出的天数会出错?
请大家帮帮忙,谢谢了!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script>
//注:要求所有表示日期的字符串的形式为"2013-01-01"
//var oneDay=24*60*60*1000;
//所有节假日
var Holidays= ["2014-01-01", "2014-01-31", "2013-01-03","2013-05-01","2013-09-01", "2013-10-01", "2013-10-02", "2013-10-03", "2013-10-04","2014-02-03","2014-02-04","2014-02-05","2014-02-06","2014-04-05","2014-04-06","2014-04-07"];
var OnWorkWeekends=["2014-01-26","2014-02-08"];
/*var Holidays= ["2014-1-1", "2014-1-31", "2013-1-3","2013-5-1","2013-9-1", "2013-10-1", "2013-10-2", "2013-10-3", "2013-10-4","2014-2-3","2014-2-4","2014-2-5","2014-2-6","2014-4-5","2014-4-6","2014-4-7"];
var OnWorkWeekends=["2014-1-26","2014-2-8"]; */
//设置起止日期
var startDate="2014-01-01";
var endDate="2014-04-30";
//
function isWeekdays(iDate){ //判断日期是否是工作日
var dt=new Date(iDate);
if(dt.getDay()==0||dt.getDay()==6){
return false;
}
else {
return true;
}
}
function getDatesBetweenTime(dateList,startDate1,endDate1){//返回指定日期集合中处于查询时间段内的日期子集
var dateBetweenTime=new Array();
for(var k=0;k<dateList.length;k++){
if(dateList[k]>=startDate1 && dateList[k]<=endDate1){
dateBetweenTime.push(dateList[k]);
alert(dateBetweenTime);
}
}
return dateBetweenTime;
}
//alert(isWeekdays(Date.parse("2013-01-01")));
//获得时段内的节假日
var holidays=getDatesBetweenTime(Holidays,startDate,endDate);
//获得时段内的应节假日调整而上班的周末日期
var onWorkWeekends=getDatesBetweenTime(OnWorkWeekends,startDate,endDate);
//alert(holidays);
//alert(onWorkWeekends);
alert(computeWorkDays(holidays,onWorkWeekends.length,startDate,endDate));
function computeWorkDays(holidays,onWorkWeekendsLen,startDate,endDate){//计算startDate~endDate(包括两个端点)中的工作日期数 格式为"2013-01-01"
var result=0; //记录结果
var oneDay=24*60*60*1000;
var weekdays=[];
var startDt=Date.parse(startDate);//Date.parse new Date
var totalDays=(Date.parse(endDate)-Date.parse(startDate))/oneDay+1;/*上次的代码少了+1,少算了一天*/
var nextDate=startDt-oneDay;
//记录查询时间段内所有的属于周一到周五的日期
for(var i=0;i<totalDays;i++){
nextDate+=oneDay;
if(isWeekdays(nextDate)){
weekdays.push(nextDate);//weekdays中存的是日期的毫秒数
}
}
result=weekdays.length;
//剔除weekdays中的节假日
for(var j=0;j<holidays.length;j++){
if(isWeekdays(Date.parse(holidays[j]))){
result--;
}
}
return (result+onWorkWeekendsLen);
}
</script>
<body>
</body>
</html>