我正在尝试计算Tasker中2个日期之间的星期一,星期三和星期五的数量,因此我需要一个数学公式,可能利用秒数形式的日期,即unix时间或javascript代码。我尝试了Googling并竭尽全力甚至开始尝试,但我迷路了,所以我还没有尝试过任何东西。我唯一想到的是获取总天数并除以7,但这显然对我没有太大帮助,尤其是如果其中一天或两天都在周中。谁能指出我的方向?
// days is an array of weekdays: 0 is Sunday, ..., 6 is Saturday
function countCertainDays( days, d0, d1 ) {
var ndays = 1 + Math.round((d1-d0)/(24*3600*1000));
var sum = function(a,b) {
return a + Math.floor( ( ndays + (d0.getDay()+6-b) % 7 ) / 7 ); };
return days.reduce(sum,0);
}
计算[1,3,5]
两个日期之间的星期一,星期三和星期五的示例:
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,1)) // 1
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,2)) // 1
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,3)) // 2
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,4)) // 2
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,5)) // 3
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,6)) // 3
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,7)) // 3
请注意,月份参数toDate
基于0,因此2014年9月1日为Date(2014,8,1)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句