问题描述
- 求教js,计算当前时间后5个工作日,要求除去国家法定节假日!
-
以下代码只能除去双休日,没有除去法定节假日。
/**- 获取某日期后几个工作日后的日期
- 参数:date:给定日期;itervalByDay:相隔工作日
- @author xxx
- 创建时间 2015-06-25
*/
function getworkday(dat,itervalByDay){var str=dat.split("-");
var date=new Date();
date.setUTCFullYear(str[0], str[1] - 1, str[2]);
date.setUTCHours(0, 0, 0, 0);
var millisceonds =date.getTime();
for(var i=1;i<=itervalByDay;i++){
millisceonds +=24*60*60*1000;
date.setTime(millisceonds);
if(date.getDay()==0||date.getDay()==6) i--;
}var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var rq = year + "-" + formatTen(month) + "-" + formatTen(day);return rq;
}
解决方案
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
var holiday= ['2015-01-01','2015-01-02','2015-01-03','2015-01-08'];
var holidayMap={};
function getMap(hd){
for(var i=0;i<hd.length;i++){
holidayMap[hd[i]]='1';
}
}
function formatTen(f){
if (parseInt(f,10)<10){
return '0'+f;
}
return f;
}
function formateDate(date){
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
return year + "-" + formatTen(month) + "-" + formatTen(day);
}
function getworkday(dat,itervalByDay){
var str=dat.split("-");
var date=new Date();
date.setUTCFullYear(str[0], str[1] - 1, str[2]);
date.setUTCHours(0, 0, 0, 0);
var millisceonds =date.getTime();
for(var i=1;i<=itervalByDay;i++){
millisceonds +=24*60*60*1000;
date.setTime(millisceonds);
if(date.getDay()==0||date.getDay()==6){
i--;
}else{//过滤节假日
var d=formateDate(date);
if(holidayMap[d]){
i--;
}
}
}
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var rq = year + "-" + formatTen(month) + "-" + formatTen(day);
return rq;
}
getMap(holiday);
var r = getworkday('2015-1-1',5);
alert(r);
</script>
</body>
</html>
解决方案二:
js计算某个时间距离当前时间的日时秒
JS动态显示当前系统时间
解决方案三:
法定假日 不好确定时间点 ,这个可以自己用一个key-value存起来,然后以获取的时间为key,find value ,看能不能拿到值,拿到就过滤掉。
key-value 你自己设置好,也可以看看有没有网上提供额API接口可以查
时间: 2024-09-16 09:56:03