gpt4 book ai didi

javascript - 在 Javascript 中添加/减去工作日

转载 作者:数据小太阳 更新时间:2023-10-29 04:32:51 25 4
gpt4 key购买 nike

我需要一个 Date.prototype.addBusDays 函数这将采用整数作为要添加到日期的工作日数。

但是,有两个注意事项:1. 周末,2. 假期(我想这将是一个用于比较的预设数组。如果开始日期和结束日期包含 3 个假期,那么您将结束日期推后 3)

我在网上遇到过一些脚本,我能想到的一个难题是,假设你先处理所有周末,然后处理假期,如果你 +1 天(由于假期)和你的结束日期怎么办又被推到了周末……<

有什么想法吗?谢谢!

编辑:

这是我正在开发的日程安排工具的一部分,这意味着日期将与链接在一起的任务相关联。向任务添加 1 天,将触发重新计算与之关联的所有内容,可能是数据库中的所有日期。

最佳答案

Datageek 的解决方案对我有帮助,但我需要对其进行扩充。这仍然不包括假期,但可以选择包括周六和/或周日的工作日,并且支持添加负数日:-

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.setTime(datStartDate.getTime() + (new Number((~~((lngNumberOfWorkingDays + intOffset) / intWorkingDays) * intNonWorkingDays) + lngNumberOfWorkingDays + intModifier)*86400000));
return newDate;
}

关于javascript - 在 Javascript 中添加/减去工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499944/

25 4 0
文章推荐: javascript - 为什么 jQuery 的加载事件不会在动态插入的脚本元素上触发?
文章推荐: c# - 如何不将面板控件呈现为
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com