排除周末日期从工作日的JavaScript
所以我还挺停留在找出某一方面。我想要做的是以下几点:排除周末日期从工作日的JavaScript
比方说,我只是简单的日期显示,它会显示一个日期,如October 10th, 2017
到最终用户。然后有一个选项,以从所述日期减去一定天数的(的1,2,3的偏移量时,选择任何偏移)。
我所希望做的完全是从计数排除周末日期 - 所以,如果今天是Monday, October 9th
和偏移的1选择,它进入Friday the 6th
;如果的2偏移被选择,它进入Thursday the 5th
;一个偏移去Wednesday the 4th
...
如果今天是Wednesday, October 11th
,一个的2偏移会带你到Monday the 9th
,一个的4偏移会去Thursday the 5th
,等等(完全计数/减法对登陆该日)时忽略/跳过周末日期。
我到目前为止只能找到功能的答案,以计算周末以外的工作天数和这种性质的事情(我已经有,使用了momentjs-business npm模块,但不是正是我所需要的)。
我没有张贴代码,因为这是一个更大的代码库的一部分,我觉得张贴片段只会增加混乱,因为我相信这个问题是相对简单和直接的;我不想过于复杂。
我希望在设置从显示给用户的日期(向用户显示的日期来自数据库)的偏移量时根本不包括周末。
我希望这一切都有意义,如果需要更多的信息,请让我知道。在此先感谢任何能指引我朝着正确方向的人!
这将实现你想要我想的。请注意,这是非常低效的。如果偏移量非常大,则会在循环的每次迭代中生成一个新日期。随着一些修修补补就可以优化
let startDate = new Date('10/10/2017');
let endDate = "", offset = 2;
while(offset > 0){
endDate = new Date(startDate.setDate(startDate.getDate() - 1));
if(endDate.getDay() !== 0 && endDate.getDay() !== 6){
offset--;
}
}
这里是一个工作Fiddle
是的,绝对低效,但正是我正在寻找!对于我的特殊用例,用户偏移永远不会超过5。非常感谢你!! – Lushmoney
javascript日期对象有,告诉你今天是什么日子一周中的getDay()方法。你可以用它来确定哪些日期是周末,并排除它们。
var date = new Date();
var dayOfWeek = date.getDay();
console.log(dayOfWeek) // 1 for Monday, 2 for Tuesday, etc.
当然是的 - 那是我第一次用原生JS和moment.js做了,它确实排除了他们发现哪一天是周末,哪些不是,但是它不符合我打算的方式。它只在所选择的偏移量结束于某一天(星期六或星期天)时起作用,但如果我们在星期三的第十一天,则选择偏移量为5,它将在星期五至星期五(因为当它倒计数5天,它从来没有在周末的一天),但我需要的是它甚至不考虑周末作为计数的一部分,并在周三结束第4天 – Lushmoney
可以使用moment-business库。它有subtractWeekDays
表示:
从这一刻减去星期几,修改原始时刻。返回时刻。
你的代码可能是这样的:
var m = moment("October 10th, 2017", "MMMM Do, YYYY");
business.subtractWeekDays(m, 2);
如果你不希望添加外部库,看看addWeekDays
和subtractWeekDays
代码。
这有助于很多,谢谢! – Lushmoney
我不明白为什么有人低估了 - 我做了我的研究,对于我发布的具体问题没有答案,这就是我发布它的原因。不明白为什么需要downvote,但如果我看起来不够努力,有人请指出,谢谢... – Lushmoney
将偏移总是减去天? – kemotoe
是的,无论选择何种偏移量,该天数总是会被减去(*除非当然是0,但没有人会选择0天偏移量...... *) – Lushmoney