簡體   English   中英

Javascript - 如何從給定的周數和年份中獲取一周中的每個日期

[英]Javascript - How do i get every date in a week from a given week number and year

如何從給定的周數獲得一周內的每個工作日(周一到周五)

輸入

var weekNumber = "week + " " + year"; //"35 2020"

想要的輸出

var weekArray = ["2020-08-24", "2020-08-25", "2020-08-26", "2020-08-27", "2020-08-28"];

這是建立在以下基礎上的示例: javascript 從周數計算日期

獲取一周的第一個日期,然后返回一個包含 7 個元素的數組,每個元素的日期遞增。

如果天數超過該月的天數,則將月份temp.m加一並將天temp.d重置為一。

 function getISOWeek(w, y) { var simple = new Date(y, 0, 1 + (w - 1) * 7); var dow = simple.getDay(); var ISOweekStart = simple; if (dow <= 4) ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1); else ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay()); const temp = { d: ISOweekStart.getDate(), m: ISOweekStart.getMonth(), y: ISOweekStart.getFullYear(), } //console.log(ISOweekStart) const numDaysInMonth = new Date(temp.y, temp.m + 1, 0).getDate() return Array.from({length: 7}, _ => { if (temp.d > numDaysInMonth){ temp.m +=1; temp.d = 1; // not needed, Date(2020, 12, 1) == Date(2021, 0, 1) /*if (temp.m >= 12){ temp.m = 0 temp.y +=1 }*/ } return new Date(temp.y, temp.m, temp.d++).toUTCString() }); } // var weekNumber = "week + " " + year"; //"35 2020" const weekNumber = "53 2020"; const weekYearArr = weekNumber.split(" ").map(n => parseInt(n)) const weekOut = getISOWeek(...weekYearArr) console.log(weekOut);

輸入:“35 2020”

輸出:

[
  "Sun, 23 Aug 2020 22:00:00 GMT",
  "Mon, 24 Aug 2020 22:00:00 GMT",
  "Tue, 25 Aug 2020 22:00:00 GMT",
  "Wed, 26 Aug 2020 22:00:00 GMT",
  "Thu, 27 Aug 2020 22:00:00 GMT",
  "Fri, 28 Aug 2020 22:00:00 GMT",
  "Sat, 29 Aug 2020 22:00:00 GMT"
]

輸入:“36 2020”

輸出:

[
  "Sun, 30 Aug 2020 22:00:00 GMT",
  "Mon, 31 Aug 2020 22:00:00 GMT",
  "Tue, 01 Sep 2020 22:00:00 GMT",
  "Wed, 02 Sep 2020 22:00:00 GMT",
  "Thu, 03 Sep 2020 22:00:00 GMT",
  "Fri, 04 Sep 2020 22:00:00 GMT",
  "Sat, 05 Sep 2020 22:00:00 GMT"
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM