4

我正在尝试计算Tasker 中两个日期之间的星期一、星期三和星期五的数量,因此我需要一个数学公式,可能使用秒形式的日期,即unix 时间或javascript 代码。我已经尝试过谷歌搜索并绞尽脑汁寻找任何方法来开始这个,我迷路了,所以我还没有尝试过任何东西。我唯一能想到的就是得到总天数并除以 7,但这显然对我没有多大帮助,特别是如果其中一天或两天是周中。谁能指出我更好的方向?

4

3 回答 3

11

如何计算 O(1) 中两个日期之间一周中的特定天数

// 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).

于 2014-09-04T18:36:44.727 回答
1

假设总天数为n。然后最初是一周中任何一天的数量n / 7。现在拿n = n % 7。根据 current 的值,n您可以轻松计算最终的天数。

例如:

假设您的第一天是Friday并且总天数是100。所以,n = 100。每个工作日都有最小值100/714在区间内。100 % 7 = 2. 所以最终的计数是,

Friday -> 14+1 = 15
Saturday -> 14+1 = 15
Sunday -> 14
Monday -> 14
Tuesday -> 14
Wednesday -> 14
Thursday -> 14
于 2014-08-29T05:40:10.327 回答
-1

如何计算JavaScript中两个日期之间的星期五数

function myfunction() {
    var frist = document.getElementById("dt_VacStart").value
    var answer = 0;
    var second = document.getElementById("dt_VacEnd").value;
    if (frist != null && second != null) {
        var startDate = new Date(frist);
        var endDate = new Date(second);
        var totalfriday = 0;
        for (var i = startDate; i <= endDate;) {
            if (i.getDay() ==5) {
                totalfriday++;
            }
            i.setTime(i.getTime() + 1000 * 60 * 60 * 24);
        }
        document.getElementById('<%=Friday.ClientID%>').value = totalfriday;
    } else {
        totalfriday = 0;
        document.getElementById('<%=Friday.ClientID%>').value = totalfriday;
    }
}
于 2016-03-15T12:06:02.750 回答