Hea*_*igh 4 javascript math date tasker
我正在尝试计算Tasker中2个日期之间的星期一,星期三和星期五的数量,因此我需要一个数学公式,可能使用以秒为单位的日期,即unix时间或javascript代码.我已经尝试使用谷歌搜索和绞尽脑汁,以任何方式甚至开始这个,我迷路了所以我还没有尝试任何东西.我唯一能想到的就是获得总天数除以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);
}
Run Code Online (Sandbox Code Playgroud)
计算[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
Run Code Online (Sandbox Code Playgroud)
请注意,month参数Date为0,因此2014年9月1日是Date(2014,8,1).
| 归档时间: |
|
| 查看次数: |
3764 次 |
| 最近记录: |