2014-10-31 29 views
0

我有一個日期參數。 2014年10月31日。我希望下一天= 2014年10月31日後45天。因此,應該是2015年1月2日。並且除週六和週日外count在javascript中選定日期之後的45個工作日

我已經做了這樣的功能。但是,當我加45。45週六和週日不排除。

function getNextBusinessDay() { 
    return getDeliveryDateObj(1); 
} 
function getDeliveryDateObj(businessDaysLeftForDelivery) { 
    var now = new Date(); 
    var dayOfTheWeek = now.getDay(); 
    now.setDate(now.getDate() + 45); 

    var calendarDays = businessDaysLeftForDelivery; 
    var deliveryDay = dayOfTheWeek + businessDaysLeftForDelivery; 
    if (deliveryDay >= 6) { 
     businessDaysLeftForDelivery -= 6 - dayOfTheWeek; //deduct this-week days 
     calendarDays += 2; //count this coming weekend 
     deliveryWeeks = Math.floor(businessDaysLeftForDelivery/5); //how many whole weeks? 
     calendarDays += (deliveryWeeks * 2); //two days per weekend per week 
    } 
    now.setTime(now.getTime() + calendarDays * 24 * 60 * 60 * 1000); 
    return now; 
} 
+0

嘗試增加63代替。 45天(週六/週日除外)正好是9周,包括星期六/星期日爲63天。當然,這不會考慮任何其他節日。 – 2014-10-31 05:07:45

+0

你沒有在你的代碼中寫入任何東西來排除sat和sund – Ali786 2014-10-31 05:11:00

回答

0

以下是我解決我的問題:

function test() { 
    var startDate = "31-oct-2014"; 
    startDate = new Date(startDate.replace(/-/g, "/")); 
    var endDate = "", noOfDaysToAdd = 45, count = 0; 
    while (count < noOfDaysToAdd) { 
     endDate = new Date(startDate.setDate(startDate.getDate() + 1)); 
     if (endDate.getDay() != 0 && endDate.getDay() != 6) { 
      count++; 
     } 
    } 
    $("#Test").val(endDate); 
} 
0

addWeekdays功能應該做你想做的。

function addWeekdays(date, weekdays) { 
 
    var newDate = new Date(date.getTime()); 
 
    var i = 0; 
 
    while (i < weekdays) { 
 
    newDate.setDate(newDate.getDate() + 1); 
 
    var day = newDate.getDay(); 
 
    if (day > 1 && day < 7) { 
 
     i++; 
 
    } 
 
    } 
 
    return newDate; 
 
} 
 

 
var currentDate = new Date('10/31/2014'); 
 
var targetDate = addWeekdays(currentDate, 45); 
 
alert(targetDate);

相關問題