我必须在当天x天后的javascript中计算变量。我必须根据一些输入参数添加一些天数。
var currentDate = new Date();
var dd = currentDate.getDate();
var mm = currentDate.getMonth()+1;
var yyyy = currentDate.getFullYear();
if(dd<10) {
dd='0'+dd
}
if(mm<10) {
mm='0'+mm
}
currentDate= mm+'/'+dd+'/'+yyyy;
现在我希望在currentDate
变量的28天之后得到一些日期,但它不应包含星期六和星期日。
所以我的问题是如何从28(例如)中排除周末(2天)。
任何帮助将不胜感激。
答案 0 :(得分:1)
这是将 n 工作日添加到日期的通用功能
function addDays(dt, n) {
var rem = n % 5;
var add = 7 * (n - rem) / 5 + rem;
var ret = new Date(dt);
ret.setDate(ret.getDate() + add);
if (ret.getDay() == 6) ret.setDate(ret.getDate() + 2);
else if (ret.getDay() == 0) ret.setDate(ret.getDate() + 1);
return ret;
}
答案 1 :(得分:0)
这很简单。下面的脚本会在start
和end
日期之间的所有日期进行检查,并检查它是否不是星期六(tmpDate.getDay() != 6
)或星期日(tmpDate.getDay() != 0
)
var start = new Date();
var end = new Date(2016, 6, 1);
var allDays = Math.floor((end.getTime() - start.getTime())/ 86400000);
var workingDays = 0;
for(var i = 0; i < allDays; i++){
var tmpDate = new Date();
tmpDate.setTime(today.getTime() + i * 24*60*60*1000);
if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6)
wokringDays++;
}
alert(workingDays);
答案 2 :(得分:0)
这将为您提供工作天数:
function getWorkingDays(currentDateObj, numberOfDays)
{
if(numberOfDays < 0) return false;
var futureDateObj = new Date();
futureDateObj.setDate(currentDateObj.getDate() + numberOfDays);
var daysCnt = 1 + Math.round((futureDateObj.getTime()-currentDateObj.getTime())/(24*3600*1000));
var weekCnt = Math.floor( (currentDateObj.getDay() + daysCnt) / 7 );
var weekends = 2 * weekCnt + (currentDateObj.getDay()==0) - (futureDateObj.getDay()==6);
return numberOfDays - weekends;
}
console.log(getWorkingDays(new Date(), 28));