第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在JavaScript中的日期范圍之間獲取重復(fù)的星期日期計(jì)數(shù)?

如何在JavaScript中的日期范圍之間獲取重復(fù)的星期日期計(jì)數(shù)?

繁花不似錦 2022-09-23 21:45:43
我有一系列的日期范圍,我需要知道全年每周有多少人工作。Eg: mainArray = ['01-01-2020','31-12-2020']; //year rangedateRanges = [  [01-01-2020, 03-01-2020], //week 1  [03-01-2020, 06-01-2020], //week 1 and 2  [09-01-2020, 09-01-2020], //week 2  [10-01-2020, 11-01-2020], //week 2  [22-01-2020, 23-01-2020], //week 4  ....];//first we need to find all the weeks from the mainArray date-range //then calculate the weeks colliding in the dateRanges array.the output should be =>workLoadInWeeks = [2,3,0,1,0,0,0,0,......,0];說(shuō)明:由于 03-01-2020(第 1 周中的日期)在第 1 和第 2 個(gè)數(shù)組索引中重復(fù),這就是為什么輸出將 2 作為第一個(gè)值的原因。由于第 2 周的日期在日期范圍[1]、日期范圍[2]、日期范圍[3]中重復(fù),這就是為什么輸出中 3 作為第二個(gè)值的原因。由于沒有人在第3周工作,它在輸出數(shù)組中為0周開始 - 周日,每周7天,我希望周的日期范圍從1月1日開始,所以第一周將是部分周,因?yàn)榈谝恢苁切瞧谌?。這聽起來(lái)可能令人困惑。我已經(jīng)盡力解釋。
查看完整描述

2 回答

?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

我們需要一個(gè)函數(shù)來(lái)計(jì)算周的總計(jì)數(shù):


function getISOWeeks(y) {

    var d,

        isLeap;


    d = new Date(y, 0, 1);

    isLeap = new Date(y, 1, 29).getMonth() === 1;


    //check for a Jan 1 that's a Thursday or a leap year that has a

    //Wednesday jan 1. Otherwise it's 52

    return d.getDay() === 4 || isLeap && d.getDay() === 3 ? 53 : 52

}

還有一個(gè)得到周數(shù)的函數(shù):


function getWeek(date_string) {

    let [d, M, y] = date_string.split(/[- :]/);

    let passedDate = new Date(y, parseInt(M) - 1, d);

    let onejan = new Date(passedDate.getFullYear(), 0, 1);

    week = Math.ceil( (((passedDate - onejan) / 86400000) + onejan.getDay() + 1) / 7 );

    return week;

在我們經(jīng)歷了這周之后,我們每周計(jì)算人數(shù)。然后我們可以計(jì)算出一整年中每周有多少人在工作。


let weeks = dateRanges.map(s => s.map(d => this.getWeek(d)));


let distinctWeeks = weeks.map(s => 

    s.filter((item, pos) => s.indexOf(item) == pos)).flatMap(s => s);


let personPerWeek = distinctWeeks.reduce((a, c)=> {

    a[c] = a[c] || 0;

    a[c] += 1;

    return a;

},{})


const weekCount = getISOWeeks(2020);

let personsPerWeeks = [];


getWorkWeeks = (workWeeks, weekCount) => {

    for (let index = 1; index <= weekCount; index++) {

        let personCount = personPerWeek[index] || 0;

        workWeeks.push(personCount);

    }

    return workWeeks;

}

一個(gè)例子可以在這里看到:


function getWeek(date_string) {

    let [d, M, y] = date_string.split(/[- :]/);

    let passedDate = new Date(y, parseInt(M) - 1, d);

    let onejan = new Date(passedDate.getFullYear(), 0, 1);

    week = Math.ceil( (((passedDate - onejan) / 86400000) + onejan.getDay() + 1) / 7 );

    return week;

}


function getISOWeeks(y) {

    var d,

        isLeap;


    d = new Date(y, 0, 1);

    isLeap = new Date(y, 1, 29).getMonth() === 1;

    //check for a Jan 1 that's a Thursday or a leap year that has a

    //Wednesday jan 1. Otherwise it's 52

    return d.getDay() === 4 || isLeap && d.getDay() === 3 ? 53 : 52

}


let dateRanges = [

  ['01-01-2020', '03-01-2020'], //week 1

  ['03-01-2020', '06-01-2020'], //week 1 and 2

  ['09-01-2020', '09-01-2020'], //week 2

  ['10-01-2020', '11-01-2020'], //week 2

  ['22-01-2020', '23-01-2020'], //week 4

];


let weeks = dateRanges.map(s => s.map(d => this.getWeek(d)));

let distinctWeeks = weeks.map(s => s.filter((item, pos) => s.indexOf(item) == pos)).flatMap(s => s);

let personPerWeek = distinctWeeks.reduce((a, c)=> {

    a[c] = a[c] || 0;

    a[c] += 1;

    return a;

},{})


const weekCount = getISOWeeks(2020);

let personsPerWeeks = [];


getWorkWeeks = (workWeeks, weekCount) => {

    for (let index = 1; index <= weekCount; index++) {

        let personCount = personPerWeek[index] || 0;

        workWeeks.push(personCount);

    }

    return workWeeks;

}


getWorkWeeks(personsPerWeeks, weekCount);

console.log(personsPerWeeks)


查看完整回答
反對(duì) 回復(fù) 2022-09-23
?
至尊寶的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

檢查這是否適合您。


dateRanges = [

 ["01-01-2020", "03-01-2020"], //week 1

  ["03-01-2020", "06-01-2020"], //week 1 and 2

  ["09-01-2020", "09-01-2020"], //week 2

  ["10-01-2020", "11-01-2020"], //week 2

  ["22-01-2020", "23-01-2020"], //week 4


];


mainArray = ['01-01-2020','31-12-2020'];

//console.log(dateRanges);

function diff_weeks(dt2, dt1) 

 {


  var diff =(dt2.getTime() - dt1.getTime()) / 1000;

  diff /= (60 * 60 * 24 * 7);

  return Math.abs(Math.round(diff));

  

 }


//for(var i = 0; i< dateRanges.length;i++){

//console.log(dateRanges[i][0]);

  var dateString1 = mainArray[0];

  var dateParts1 = dateString1.split("-"); 

  var dt1 = new Date(+dateParts1[2], dateParts1[1] - 1, +dateParts1[0]); 

  var dateString2 = mainArray[1];

  var dateParts2 = dateString2.split("-"); 

  var dt2 = new Date(+dateParts2[2], dateParts2[1] - 1, +dateParts2[0]); 

  //console.log(dt1);

  console.log(diff_weeks(dt1, dt2) + " Weeks");

//}


查看完整回答
反對(duì) 回復(fù) 2022-09-23
  • 2 回答
  • 0 關(guān)注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)