Как рассчитать количество пятниц между двумя датами, используя javascript или jquery - PullRequest
1 голос
/ 08 марта 2020

Я хочу общее количество конкретных дней между двумя датами. Например: Если у меня есть разные начальные и конечные даты, необходимо вернуть общее количество пятниц между этими датами.

Ответы [ 4 ]

1 голос
/ 08 марта 2020

Это может помочь. Это довольно просто.

let startDate = new Date('2020-03-08T12:12:06.411Z')
let endDate = new Date('2020-03-22T12:12:06.411Z')
const givenDay = 5 // 0 for sunday, 1 for monday and so on

let numberOfDates = 0

function getDays() {
    while (startDate < endDate) {
        if (startDate.getDay() === givenDay) {
          numberOfDates++
        }
        startDate.setDate( startDate.getDate() + 1 )
    }

    return numberOfDates
}

console.log(getDays())
0 голосов
/ 08 марта 2020
var start_date = new Date("March 07, 2020 23:15:00");
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

var end_date = new Date("March 07, 2021 23:15:00");    
var next_fri = new Date();
var add_days = 0;
if(start_date.getDay() == 5){
    add_days = 0;
}else if(start_date.getDay() < 5){
    add_days = 5 - start_date.getDay();
}else{
    add_days = start_date.getDay();
}
//set the next friday date from the given start date
next_fri.setDate(start_date.getDate() +  add_days);


var time_gap = (end_date.getTime() - next_fri.getTime());
var time_per_day = 1000 * 24 * 60  * 60;

var days_gap =  Math.floor(time_gap/time_per_day);
var no_fri = Math.floor(days_gap/7);
no_fri = no_fri + 1;


(no_fri is your answer, here i have assumed that end_date is always greater than start_date but if not so you would have to apply the check to inetrchange them)
0 голосов
/ 08 марта 2020

Используйте момент. js при работе с датами.

var start = moment('2020-01-01'), //start date
    end   = moment('2020-03-08'), //end date
    day   = 5;

var result = [];
var current = start.clone();

while (current.day(7 + day).isBefore(end)) {
  result.push(current.clone());
}

console.log(result.map(m => m.format('LLLL'))); //result

Подробнее: https://momentjs.com/

0 голосов
/ 08 марта 2020

Вы можете использовать эту функцию:

// days is an array of weekdays: 0 is Sunday, ..., 6 is Saturday
const 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);
}

пример:

countCertainDays([5],new Date(2020,0,1),new Date(2020,2,1))

И еще пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...