如何在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>
所以我有这个 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>