JSFiddle - React, Tailwind, and code Playground

by FungLee

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
extendMonment

JavaScript

const extendMonment = date => {
  const momentObj = moment(date);

  momentObj.APIDateFormat = {
    day: 'YYYY-MM-DDTHH',
    week: 'YYYY-MM-DD',
    month: 'YYYY-MM-DD',
    year: 'YYYY-MM',
  }

  momentObj.__proto__.clone = function() {
  	return extendMonment(this);
  }

  momentObj.__proto__.setPast = function(type, pastValue, dateType) {
    this.subtract(pastValue, dateType);
    switch (type) {
      case 'start':
        this.startOf(dateType);
        break;
      case 'end':
        this.endOf(dateType);
        if (this.isAPIFormat) this.add(1, 'seconds');
        break;
    }
  }

  momentObj.__proto__.APIFormat = function(isEnable = true) {
    this.isAPIFormat = isEnable;
    return this;
  }

  momentObj.__proto__.getYesterday = function(type, isObject = false) {
    this.setPast(type, 1, 'day');
    return isObject ? this : this.format(this.APIDateFormat['day']);
  }

  momentObj.__proto__.getLastWeek = function(type, isObject = false) {
    this.setPast(type, 1, 'week');
    return isObject ? this : this.format(this.APIDateFormat['week']);
  }

  momentObj.__proto__.getLastMonth = function(type, isObject = false) {
    this.setPast(type, 1, 'month');
    return isObject ? this : this.format(this.APIDateFormat['month']);
  }

  return momentObj;
}

const date = moment();
const extendDate = extendMonment();

console.log('moment()', date);
console.log('extendMonment()', extendDate);

console.log('----------------------------');

const yesterdayObj = extendMonment(extendDate).getYesterday();
const yesterdayStartDate = extendMonment(extendDate).getYesterday('start');
const yesterdayEndDate = extendMonment(extendDate).getYesterday('end');

console.log('extendMonment getYesterday()', yesterdayObj);
console.log('extendMonment getYesterday("start")', yesterdayStartDate);
console.log('extendMonment getYesterday("end")', yesterdayEndDate);

console.log('----------------------------');

const lastWeekObj = extendMonment(date).getLastWeek();
const...