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...