Javascript-如何从给定的星期数和年份中获取一周中的每个日期 [英] Javascript - How do i get every date in a week from a given week number and year

查看:48
本文介绍了Javascript-如何从给定的星期数和年份中获取一周中的每个日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从给定的星期数获得一周中的每个工作日(星期一至星期五)

How do I get every weekday (monday through friday) in a week from a given week number

输入

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

想要的输出

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

推荐答案

以下是建立在以下示例之上的示例:

Here's an example building on top of: javascript calculate date from week number

获取星期的第一个日期,然后返回一个包含7个元素的数组,递增每个元素的日期.

Get the first date of the week, then return an array of 7 elements, incrementing the date for each element.

如果天数超过一个月中的天数,则将一个月添加到 temp.m 并将天 temp.d 重置为等于1

If the day number goes above the number of days in the month, then add one to the month temp.m and reset the day temp.d equal to one.

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"

Input: "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"

input : "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"
]

这篇关于Javascript-如何从给定的星期数和年份中获取一周中的每个日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆