如何使用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)