Skip to content

Instantly share code, notes, and snippets.

@guillaumepiot
Last active August 10, 2018 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guillaumepiot/ebd2420a5e5e8d2d5add to your computer and use it in GitHub Desktop.
Save guillaumepiot/ebd2420a5e5e8d2d5add to your computer and use it in GitHub Desktop.
Weeks in month using Moment.js
var get_calendar;
var calendar, endDay, firstDay, firstWeekDay, headerRow, i, j, lastWeekDay, len, len1, month, monthRange, row, startDate, week, weekRange, weeks, year,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
get_calendar = function(year, month) {
startDate = moment([year, month]);
firstDay = moment(startDate).startOf('month');
endDay = moment(startDate).endOf('month');
monthRange = moment.range(firstDay, endDay);
weeks = [];
monthRange.by('days', function(moment) {
var ref;
ref = void 0;
if (ref = moment.week()) {
indexOf.call(weeks, ref) < 0;
return weeks.push(moment.week());
}
});
calendar = [];
i = 0;
len = weeks.length;
while (i < len) {
week = weeks[i];
if (i > 0 && week < weeks[i - 1]) {
firstWeekDay = moment([year, month]).add(1, 'year').week(week).day(1);
lastWeekDay = moment([year, month]).add(1, 'year').week(week).day(7);
} else {
firstWeekDay = moment([year, month]).week(week).day(1);
lastWeekDay = moment([year, month]).week(week).day(7);
}
weekRange = moment.range(firstWeekDay, lastWeekDay);
calendar.push(weekRange);
i++;
}
return calendar;
};
@antoniobrandao
Copy link

The jsFiddle doesn't seem to be working. Chrome 68

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment