1

I have one query where I need to count number of business days from today to given number,

Like today is 09/14/2021 & given number is 10 I want the last date 09/28/2021 as it is 10th working day from today. I tried below to count day different

    var startDate = new Date();
    var endDate = new Date();
    if(res.defaultLeadTime !== 0){
        endDate.setDate(startDate.getDate() + 10);
    }

I am getting 24th Sep, 2021. Now I am counting weekends between two dates

countWeekendDays = ( d0, d1 ) => {
    var ndays = 1 + Math.round((d1.getTime()-d0.getTime())/(24*3600*1000));
    var nsaturdays = Math.floor( (d0.getDay()+ndays) / 7 );
    return 2*nsaturdays + (d0.getDay()==0) - (d1.getDay()==6);
}

And adding these number of days in the counting gives me another date but I am confuse if there is again weekend in the new date range then what can I do with that days.

So anyone can please guide me for this.

Kirankumar Dafda
  • 2,354
  • 5
  • 29
  • 56
  • This question has been asked and answered [many times before](https://stackoverflow.com/search?q=%5Bjavascript%5D+add+business+days), e.g. [*exclude weekends in javascript date calculation*](https://stackoverflow.com/questions/28286293/exclude-weekends-in-javascript-date-calculation) and [*add/subtract business days in Javascript*](https://stackoverflow.com/questions/6499944/add-subtract-business-days-in-javascript?r=SearchResults&s=2|93.2506). Also note that the "weekend" occurs on different days in different cultures. – RobG Sep 14 '21 at 09:36

2 Answers2

3

try this :

var startDate = "14-SEPT-2021";
startDate = new Date(startDate.replace(/-/g, "/"));
var endDate = "", noOfDaysToAdd = 10, count = 0;
while(count < noOfDaysToAdd){
    endDate = new Date(startDate.setDate(startDate.getDate() + 1));
    if(endDate.getDay() != 0 && endDate.getDay() != 6){
       count++;
    }
}
alert(endDate);//You can format this date as per your requirement
trysetyoutomo
  • 346
  • 2
  • 8
1

Another Solution

startDate = new Date("09/17/2021");  
endDate = new Date("10/28/2021");  

 
// Calculate days_difference = (endDate milliseconds - startDate milliseconds) / (1000 * 60 * 60 * 24) to get results in days  
var days_difference = (endDate.getTime() - startDate.getTime()) / 86400000; 
 
// Calculate number of weekends during the whole duration
var weekdends = Math.floor(days_difference/7) * 2 ;

// Adjust weekends depend on start days 
(days_difference%7)+startDate.getDay() == 6 ? weekdends+=2 : 
  (days_difference%7)+startDate.getDay() == 5 ? weekdends+=1 :
  weekdends;

// Calculate Working Days 
var workDays = days_difference - weekdends

console.log("Working days",(workDays));
EL-Mradny
  • 11
  • 5
  • 1
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-ask). – Community Sep 14 '21 at 08:44