如何在Javascript和逻辑公式中得到一个月中有多少周和几天

How to get how many weeks and days in a month in Javascript and logic formulation

所以我有这个 daterangepicker,其中默认日期是 2020/04/15,除此之外,<select> 元素有 "Daily"、[=28 选项=], "Monthly" (请看下图)。

除了 daterangepicker.

之外,是否有任何方法可以计算每周从四月的哪一天开始,以及每当我单击下拉列表中的每周或每月时,四月有多少天

例如:

4 月有 30 天,第 1 周从 4 月 6 日开始 而 3 月有 31 天,第 1 周从 3 月 2 日开始

我知道每个月都有 4 周,但问题是我怎样才能得到每个月开始一周的那一天。 javascript有什么办法计算吗?或者我应该从第 1 天开始然后算 7 天?

基本的...

// prepare select for demo
for(let i=2015; i<2026;i++) eYear.add( new Option(i, i) )
eYear.value = 2020

function calcMonthInfos( month=0, year=2020 ) // default on January 2020
  {
  let nDay = 0, lastDay = 28, wDay, wMonth
    ; 
  do { wDay = new Date(year,month,++nDay).getDay() }
  while (wDay != 1)  // sunday is day 0 , monday day 1
    ;
  do { wMonth = new Date(year,month,++lastDay).getMonth() }
  while (wMonth == month)  //  check month changing
    ;
  return ({ monday1fst: nDay, monthDays:--lastDay })
  }  


// démo code :
btGetInfo.onclick=_=>
  {
  let monthInfo = calcMonthInfos(parseInt(eMonth.value), parseInt(eYear.value) )
    , MonthName = eMonth.options[eMonth.selectedIndex].text
    ;
  info.textContent = `First monday of ${MonthName} ${eYear.value} ` 
                   + `is the ${monthInfo.monday1fst}, ` 
                   + `this month has ${monthInfo.monthDays} days`
  }
<select id="eMonth">
  <option value="0"> January </option>
  <option value="1"> February</option>
  <option value="2"> March</option>
  <option value="3"> April</option>
  <option value="4"> May</option>
  <option value="5"> June</option>
  <option value="6"> July</option>
  <option value="7"> August</option>
  <option value="8"> September</option>
  <option value="9"> October</option>
  <option value="10"> November</option>
  <option value="11"> December</option>
  </select>

<select id="eYear"></select>

<br><br>
 
<button id="btGetInfo">get info</button>

<p id="info">...</p>