如何根据月份获取 dateRange
Posted
技术标签:
【中文标题】如何根据月份获取 dateRange【英文标题】:How can i get dateRange based on month 【发布时间】:2020-05-11 21:16:15 【问题描述】:我正在尝试根据该月的一周开始到一周结束在一个月内获取 dateRange。例如,如果我过了 2020 年 1 月,那么 dateRange 应该从 [2019-12-30 到 2020-01-31] 获取数据,
2 月 = [2020-02-03 至 2020-02-28], 三月 = [2020-03-02 至 2020-04-03]
【问题讨论】:
我猜你想要月底而不是周末。 我实际上想要一周的开始和一周的结束......所以在 2020 年,第 1 周从 2019 年 12 月 30 日开始,该月的结束在 1 月 31 日停止, 2020 【参考方案1】:谢谢@Kaca992 这是我为我工作的,它仍然可以重构。 #MakeThisCodeBetter
function GregorianWeeksInAYear()
let year = 2020;
let month = 0;
let startDate = "";
let endDate = "";
const monthsInYear = [];
while (month < 12)
let isLeapYear = moment([year]).isLeapYear();
if(isLeapYear)
if(month > 0)
startDate = moment([year,month]).startOf('month').isoWeekday(1).add(7,'days');
else
startDate = moment([year,month]).startOf('month').isoWeekday(1);
endDate =
moment([year,month]).endOf('month').isoWeekday(1).add(5,'days').subtract(1,'days');
else
startDate = moment([year,month]).startOf('month').isoWeekday(1);
endDate = moment([year,month]).endOf('month').isoWeekday(1).add(4,'days');
monthsInYear.push(start:moment(startDate).format('YYYY-MM-DD'),end:moment(endDate).format('YYYY-MM-DD'),name: moment(startDate).add(4,'days').format('MMMM'))
month++;
return monthsInYear;
【讨论】:
【参考方案2】:我建议你检查 moment.js (https://momentjs.com/docs/#/get-set/week/)
希望这会有所帮助:)
【讨论】:
以上是关于如何根据月份获取 dateRange的主要内容,如果未能解决你的问题,请参考以下文章