Get All Monday Dates In Month using Moment,js

2019-04-04 17:50发布

问题:

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.

回答1:

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');
}

check this out



回答2:

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.



回答3:

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');