在javascript中选定日期之后计算45个工作日

时间:2014-10-31 05:04:44

标签: javascript

我有一个日期参数。 2014年10月31日。我希望在2014年10月31日之后的第二天= 45天。所以它应该是2 Januari 2015.而不包括周六和周日

我已经完成了这样的功能。但是当我加上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;
}

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
}