有没有办法使用moment.js库获取当月的所有星期一日期。
我知道我可以在月底结束:
moment().endOf('month')
但是如何获得当前/任何月份的所有星期一日期。
我不想在javascript默认日期库中使用某些函数。请使用Moment Js Library参考代码。
答案 0 :(得分:17)
我刚刚阅读过docs并且找不到任何返回数组的方法,所以你只需要使用循环
var monday = moment()
.startOf('month')
.day("Monday");
if (monday.date() > 7) monday.add(7,'d');
var month = monday.month();
while(month === monday.month()){
document.body.innerHTML += "<p>"+monday.toString()+"</p>";
monday.add(7,'d');
}
答案 1 :(得分:8)
<强>更新强>
我为此做了一点drop in。将其添加到您的页面:
<script src="https://gist.github.com/penne12/ae44799b7e94ce08753a/raw/moment-daysoftheweek-plus.js"></script>
然后:
moment().allDays(1) //=> [...]
moment().firstDay(1)
等 - 随时查看source
旧帖子
此功能应该有效:
function getMondays(date) {
var d = date || new Date(),
month = d.getMonth(),
mondays = [];
d.setDate(1);
// Get the first Monday in the month
while (d.getDay() !== 1) {
d.setDate(d.getDate() + 1);
}
// Get all the other Mondays in the month
while (d.getMonth() === month) {
mondays.push(new Date(d.getTime()));
d.setDate(d.getDate() + 7);
}
return mondays;
}
用法:本月为getMondays()
,不同月份为getMondays(moment().month("Feb").toDate())
。
从jabclab's Stack Overflow Answer,修改为包含自定义日期参数。
答案 2 :(得分:5)
我知道这已经过时了,但这是Google首先出现的问题。
您可以使用我的moment-weekdaysin moment.js插件获取当月的所有星期一:
moment().weekdaysInMonth('Monday');