目标
我想通过提供年,月和周的编号来获取开始日期和结束日期。 我正在尝试使用momentjs,因为它已经存在于我的依赖中。
我完成的工作
如果我设置.month(monthInNumber)似乎是不可能的,因为我没有星期一,而且搞砸了,所以我所做的是天真的方式,它无法工作= 4 * month并将其设置为星期
getStartDateByWeekAndYear = function(week, year, month) {
return moment().day("Monday").year(year).week((4*month)+(week)).toDate();
};
对于最后一天(我希望Satruday作为最后一天而不是星期日)
getLastDateByWeekAndYear = function(week, year, month) {
return moment().day("Saturday").year(year).week((4*month)+(week)).toDate();
};
我也尝试了几种解决方案,但是如果我尝试在上述功能中实现相同的功能,那似乎就行不通了。
预期产量
getStartDateByWeekAndYear(2, 2019, 6)
我应该在2019年6月3日,星期一,今天今天
getEndDateByWeekAndYear(2, 2019, 6)
我应该在2019年6月8日(星期六),这是本周的星期六
答案 0 :(得分:1)
您可以使用moment({Object})
获取给定月份/年份的开始日期,然后使用add()
添加周数来获取所需的星期。
这里有一个现场样本:
const getStartDateByWeekAndYear = function(week, year, month) {
return moment({y: year, M: month-1, d: 1})
.add(week-1, 'w').day("Monday").toDate();
};
const getEndDateByWeekAndYear = function(week, year, month) {
return moment({y: year, M: month-1, d: 1})
.add(week-1, 'w').day("Saturday").toDate();
}
console.log( getStartDateByWeekAndYear(2, 2019, 6) );
console.log( getEndDateByWeekAndYear(2, 2019, 6) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>