我正在创建一个计划交付系统。
我编写了以下脚本,该脚本以dd/mm/yyyy格式(英国)计算两个日期之间的一周中特定日期的数量。
var date0 = "01/02/2021";
var date1 = "31/01/2022";
var dayList = [1]; // Monday based on Sunday being 0
var test = countDays(dayList,parseDate(date0),parseDate(date1));
alert(test);
function parseDate(str) {
var dmy = str.split('/');
return new Date(+dmy[2],dmy[1] - 1,+dmy[0]);
}
function countDays(days,fromDate,toDate) {
var ndays = 1 + Math.round((toDate-fromDate)/(24*3600*1000));
var sum = function(a,b) {
return a + Math.floor((ndays+(fromDate.getDay()+6-b)%7)/7);
};
return days.reduce(sum,0);
}
在这个特定示例中,dayList=[1]
是'Monday'。脚本计算两个日期之间星期一的数量,我们得到的结果是53(因为01/02/2021福尔斯星期一)。
如果我想根据滚动周找出两个日期之间有多少个星期一,这将非常有效。
我如何修改它以允许滚动两周?
例如,我可能想找出基于连续两周(而不是连续一周)的每周周一和每隔一周的周五有多少个,我必须考虑每周和每两周交货的混合。
例如:在这种情况下,客户希望每周一交付一次,每隔一个周五交付一次额外的交付。
Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri
x x x
日程变化很大。滚动的两周从用户提供的开始日期开始。
我正在寻找的是开始和结束日期之间的总天数,但我正在努力考虑“滚动两周”方面的问题。
1条答案
按热度按时间zpgglvta1#
我认为您可以获得日期之间的日期名称,然后使用
reduce
来计算每个日期出现的次数,然后使用它来计算有多少次递送: