所以我有点想弄清楚某个方面。我想做的是以下几点:
我们说我只有一个简单的日期显示,它会向最终用户显示October 10th, 2017
之类的日期。然后可以选择从所述日期减去一定天数(偏移量为1,2,3,无论选择何种偏移量)。
我要做的是将完整的周末日期排除在计数之外 - 因此,如果今天为Monday, October 9th
,并且选择偏移量为1 ,则会转到{{1} };如果选择偏移2 ,则转到Friday the 6th
; 偏移3 转到Thursday the 5th
...
如果今天为Wednesday the 4th
,则偏移为2 会将您带到Wednesday, October 11th
,偏移为4 会转到{{1}等等(在计算/减去哪一天落在时完全忽略/跳过周末日期。)
到目前为止,我只能找到计算不包括周末的工作日数的功能的答案,以及那种性质的东西(我已经拥有,使用momentjs-business npm模块,但是不完全是我需要的)。
我没有发布代码,因为这是一个更大的代码库的一部分,我觉得发布片段只会增加混乱,因为我相信这个问题相对简单明了;我不想过于复杂。
我想要的是,当从用户显示的日期设置偏移量时,根本不包括周末(显示给用户的日期来自数据库)。
我希望这一切都有意义,如果需要更多信息,请告诉我。提前感谢任何能指出我正确方向的人!
答案 0 :(得分:1)
这将达到您想要的目标。请注意,这非常低效。如果您的偏移非常大,它会在循环的每次迭代中生成一个新日期。通过一些修补,可以进行优化
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
答案 1 :(得分:1)
您可以使用moment-business库。它有subtractWeekDays
:
从此刻减去工作日,修改原始时刻。返回时刻。
您的代码可能如下所示:
d$Result <- 100*ave(...)
如果您不想添加外部库,请查看addWeekDays
和subtractWeekDays
代码。
答案 2 :(得分:0)
JavaScript日期对象有一个getDay()方法,可以告诉您星期几是哪一天。您可以使用它来确定哪些日期是周末并排除它们。
var date = new Date();
var dayOfWeek = date.getDay();
console.log(dayOfWeek) // 1 for Monday, 2 for Tuesday, etc.