Calculate number of specific weekdays between dates

后端 未结 3 2097
孤独总比滥情好
孤独总比滥情好 2020-12-11 08:03

I\'m trying to calculate the number of Mondays, Wednesdays, and Fridays between 2 dates in Tasker, thus I need a math formula, possibly utilizing the date in seconds form,

相关标签:
3条回答
  • 2020-12-11 08:05

    How to count the number of friday between two date in 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;
        }
    }
    
    0 讨论(0)
  • 2020-12-11 08:17

    How to count specific days of the week between two dates in 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);
    }
    

    Example on counting Mondays, Wednesdays, and Fridays [1,3,5] between two dates:

    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
    

    Note that the month parameter to Date is 0-based, so 1 Sept 2014 is Date(2014,8,1).

    0 讨论(0)
  • 2020-12-11 08:27

    Assume total number of days is n. Then number of any day of a week is initially n / 7. Now take n = n % 7. Depending on the value of current n you can easily calculate the final count of days.

    As example:

    Assume your first day is Friday and total number of days is 100. So, n = 100. There are minimum 100/7 or 14 of each weekday is in the interval. 100 % 7 = 2. So final count is,

    Friday -> 14+1 = 15
    Saturday -> 14+1 = 15
    Sunday -> 14
    Monday -> 14
    Tuesday -> 14
    Wednesday -> 14
    Thursday -> 14
    
    0 讨论(0)
提交回复
热议问题