gpt4 book ai didi

javascript - 带有额外日期的工作日 Javascript

转载 作者:行者123 更新时间:2023-11-28 00:33:43 25 4
gpt4 key购买 nike

我有一个函数,可以计算传递的日期,并将给定的天数添加到结果中,以确保输出的日期不会出现在周末。

功能

function addWorkingDays(datStartDate, lngNumberOfWorkingDays, blnIncSat, blnIncSun) {
var intWorkingDays = 5;
var intNonWorkingDays = 2;
var intStartDay = datStartDate.getDay(); // 0=Sunday ... 6=Saturday
var intOffset;
var intModifier = 0;

if (blnIncSat) { intWorkingDays++; intNonWorkingDays--; }
if (blnIncSun) { intWorkingDays++; intNonWorkingDays--; }
var newDate = new Date(datStartDate)
if (lngNumberOfWorkingDays >= 0) {
// Moving Forward
if (!blnIncSat && blnIncSun) {
intOffset = intStartDay;
} else {
intOffset = intStartDay - 1;
}
// Special start Saturday rule for 5 day week
if (intStartDay == 6 && !blnIncSat && !blnIncSun) {
intOffset -= 6;
intModifier = 1;
}
} else {
// Moving Backward
if (blnIncSat && !blnIncSun) {
intOffset = intStartDay - 6;
} else {
intOffset = intStartDay - 5;
}
// Special start Sunday rule for 5 day week
if (intStartDay === 0 && !blnIncSat && !blnIncSun) {
intOffset++;
intModifier = 1;
}
}
// ~~ is used to achieve integer division for both positive and negative numbers
newDate.setDate(datStartDate.getDate() + new Number((~~((lngNumberOfWorkingDays + intOffset) / intWorkingDays) * intNonWorkingDays) + lngNumberOfWorkingDays + intModifier));
return newDate;
}

我现在需要向此函数添加一些日期以使其考虑在内,这些日期是澳大利亚悉尼的公共(public)假期。我希望实现以下目标。

var newDate = addWorkingDays('30/09/2015', 3, false, false);

在此示例中,返回的日期将是 03/10/2015,这是一个公共(public)假期,因此我们需要返回 04/10/2015

相关日期是:

01/01/2015 New Year's Day
26/01/2015 Australia Day
09/03/2015 Labour Day / Eight Hours Day / Adelaide Cup / Canberra Day
03/04/2015 Good Friday
06/04/2015 Easter Monday
25/04/2015 ANZAC Day
08/06/2015 Queen's Birthday
03/08/2015 Bank Holiday / Picnic Day
05/10/2015 Labour Day
03/11/2015 Melbourne Cup
25/12/2015 Christmas Day
26/12/2015 Boxing Day

鉴于上面的函数,有人可以帮助我修改该函数以将这些日期考虑在内。

最佳答案

因为当我尝试像您指定的那样调用它时,您的代码给了我错误,但无论如何您应该能够简单地检查您要作为答案给出的日期是否是您的无效日期之一,并且如果是这样,则在下一个工作日返回:

(伪代码)

newDate.setDate(datStartDate.getDate() + new Number((~~((lngNumberOfWorkingDays + intOffset) / intWorkingDays) * intNonWorkingDays) + lngNumberOfWorkingDays + intModifier));
if (newDate == "01/01/2015" || newDate == "26/01/2015" || ....) {
return addWorkingDays(newDate, 1, blnIncSat, blnIncSun);
}
else {
return newDate;
}

关于javascript - 带有额外日期的工作日 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28705618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com