Moment
by evgkch
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.js"></script>
JavaScript
const interval = {
HOURS: { key: 'hours', extension: 'hour', converter: 'DD MMM HH:mm' },
DAYS: { key: 'days', extension: 'day', converter: 'DD.MM.YY' },
MONTHS: { key: 'months', extension: 'month', converter: 'MM.YYYY' },
YEARS: { key: 'years', extension: 'year', converter: 'YYYY' },
};
class Moment {
/**
* Parse date to UTC format
* @param {string} date
* @return {string}
*/
static dateToUTC(date = new Date()) {
return moment(date).utc();
}
/**
* Return start of date
* @param {string} [extension=interval.DAYS.extension]
* @return {string}
*/
static startOf(extension = interval.DAYS.extension) {
return moment().utc().startOf(extension).format();
}
/**
* Return end of date
* @param {string} [extension=interval.DAYS.extension]
* @return {string}
*/
static endOf(extension = interval.DAYS.extension) {
return moment().utc().startOf(extension).format();
}
/**
* Create date interval array from start date to end date
* @param {string} startDate
* @param {string} endDate
* @param {Object} [interval={key:'days',converter:'DD.MM.YY'}]
* @return {string[]}
*/
static createInterval(startDate, endDate, interval = { key: 'days', converter: 'DD.MM.YY' }) {
const now = this.dateToUTC(startDate),
end = this.dateToUTC(endDate),
buffer = [];
while (now.isSameOrBefore(end, interval.converter)) {
buffer.push(now.format(interval.converter));
now.add(1, interval.key);
};
return buffer;
}
}
console.log(Moment.startOf('day'))