Reputation: 10319
Is there any way to get all the Monday DATES in the current month using moment.js library.
I know I can get the end of the month with:
moment().endOf('month')
but how to get all monday dates of current / any month.
I dont want some function in javascript default date library. Please refer the code using Moment Js Library.
Upvotes: 15
Views: 21562
Reputation: 2646
I've just read docs and haven't found any method that returns an array, so you need to do it only with loop
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');
}
Upvotes: 26
Reputation: 2032
I know this is old but this is the first thing that comes up in Google.
You can get all the Mondays in the month by using my moment-weekdaysin moment.js plugin:
moment().weekdaysInMonth('Monday');
Upvotes: 6
Reputation: 5657
Update
I made a little drop in for this. Add it to your page:
<script src="https://gist.github.com/penne12/ae44799b7e94ce08753a/raw/moment-daysoftheweek-plus.js"></script>
And then:
moment().allDays(1) //=> [...]
moment().firstDay(1)
etc - feel free to check out the source
Old Post
This function should work:
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;
}
Usage: getMondays()
for this month, or getMondays(moment().month("Feb").toDate())
for a different month.
From jabclab's Stack Overflow Answer, modified to include custom date param.
Upvotes: 9