JSFiddle - React, Tailwind, and code Playground

JavaScript

const moment = require('moment');

// moment settings
moment.locale('ru');

class Calendar{
  constructor(){
    this.now = moment();
    this.format = 'DD, MMMM, YYYY'
    this.firstDayOfMonth = this.now.clone().startOf('month');
    this.lastDayOfMonth = this.now.clone().endOf('month');

    this.firstDayOfFirstWeek = this.firstDayOfMonth.clone().startOf('week');
    this.lastDayOfFirstWeek = this.firstDayOfMonth.clone().endOf('week');

    this.firstDayOfLastWeek = this.lastDayOfMonth.clone().startOf('week');
    this.lastDayOfLastWeek = this.lastDayOfMonth.clone().endOf('week');
  }
  generateCalendar(){
    let cursor = this.firstDayOfFirstWeek.clone();

    while(!cursor.isSame(this.lastDayOfLastWeek)){
      console.log(cursor.format(this.format),
        this.lastDayOfLastWeek.format(this.format),
        cursor.isSame(this.lastDayOfLastWeek)
      );
      cursor.add(1, 'days');
    }
  }
}

calendar = new Calendar();
calendar.generateCalendar();