Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript或jquery计算两个日期之间的星期五计数_Javascript_Jquery - Fatal编程技术网

如何使用javascript或jquery计算两个日期之间的星期五计数

如何使用javascript或jquery计算两个日期之间的星期五计数,javascript,jquery,Javascript,Jquery,我需要两个日期之间特定日期的总计数,例如:如果我有一个可变的开始日期和结束日期,则需要返回这些日期之间的星期五总计数。您可以使用此函数: // 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(

我需要两个日期之间特定日期的总计数,例如:如果我有一个可变的开始日期和结束日期,则需要返回这些日期之间的星期五总计数。

您可以使用此函数:

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

还有一个。

这可能会有所帮助。这很直截了当

让startDate=新日期('2020-03-08T12:12:06.411Z')
让endDate=新日期('2020-03-22T12:12:06.411Z')
const givenDay=5//0表示周日,1表示周一,依此类推
设numberOfDates=0
函数getDays(){
while(开始日期<结束日期){
if(startDate.getDay()==givenDay){
日期数++
}
startDate.setDate(startDate.getDate()+1)
}
返回日期
}

console.log(getDays())
在处理日期时使用Moment.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
阅读更多信息:

var开始日期=新日期(“2020年3月7日23:15:00”);
风险值天数=[“周日”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”];
var结束日期=新日期(“2021年3月7日23:15:00”);
var next_fri=新日期();
var add_天数=0;
如果(开始日期.getDay()==5){
加上天数=0;
}else if(start_date.getDay()<5){
add_days=5-start_date.getDay();
}否则{
add_days=start_date.getDay();
}
//从给定的开始日期设置下一个星期五日期
next_fri.setDate(start_date.getDate()+add_days);
var time_gap=(end_date.getTime()-next_fri.getTime());
每_天的var时间=1000*24*60*60;
var days\u gap=数学下限(时间间隔/每天时间);
var no_fri=数学下限(天数/差距/7);
无周五=无周五+1;
(您的答案是否定的,这里我假设结束日期总是大于开始日期,但如果不是这样,您将不得不对inetrchange进行检查)

您尝试过什么,它到底有什么问题?两个日期之间有四个星期五。
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)