src/utils/globalFnDate.js
import moment from 'moment';
let formats = {
dateFormat: 'DD.MM.YYYY',
timeFormat: 'HH:mm:ss',
};
/**
* Функция хелпер для соединения форматов
* Берет формат из аргумента или глобальной переменной
* @param overrideFormat
* @returns {string}
*/
const getFormat = overrideFormat =>
`${(overrideFormat || formats).dateFormat} ${
(overrideFormat || formats).timeFormat
}`;
const fns = {
/**
* Возвращает текущий день
* @param newFormat - кастомный формат даты
* @returns {string}
*/
now: newFormat => moment().format(getFormat(newFormat)),
/**
* Возвращает текущее время в UTC
* @param newFormat - кастомный формат даты
* @returns {string}
*/
nowUTC: newFormat => moment.utc().format(getFormat(newFormat)),
/**
* Возвращает сегодняшний день
* @param newFormat - кастомный формат даты
* @returns {string}
*/
today: newFormat =>
moment()
.startOf('day')
.format(getFormat(newFormat)),
/**
* Возвращает вчерашний день
* @param newFormat - кастомный формат даты
* @returns {string}
*/
yesterday: newFormat =>
moment()
.add(-1, 'd')
.startOf('day')
.format(getFormat(newFormat)),
/**
* Возвращает завтрешний день
* @param newFormat - кастомный формат даты
* @returns {string}
*/
tomorrow: newFormat =>
moment()
.add(1, 'd')
.startOf('day')
.format(getFormat(newFormat)),
/**
* Возвращает начало текущего дня
* @param newFormat - кастомный формат даты
* @returns {string}
*/
beginDay: newFormat =>
moment()
.startOf('day')
.format(getFormat(newFormat)),
/**
* Возвращает конец текущего дня
* @param newFormat - кастомный формат даты
* @returns {string}
*/
endDay: newFormat =>
moment()
.endOf('day')
.format(getFormat(newFormat)),
/**
* Возвращает начало текущей недели
* @param newFormat
* @returns {string}
*/
beginWeek: newFormat =>
moment()
.startOf('isoWeek')
.format(getFormat(newFormat)),
/**
* Возвращает конец текущей недели
* @param newFormat
* @returns {string}
*/
endWeek: newFormat =>
moment()
.endOf('isoWeek')
.format(getFormat(newFormat)),
/**
* Возвращает начало текущего месяца
* @param newFormat
* @returns {string}
*/
beginMonth: newFormat =>
moment()
.startOf('month')
.format(getFormat(newFormat)),
/**
* Возвращает конец текущего месяца
* @param newFormat
* @returns {string}
*/
endMonth: newFormat =>
moment()
.endOf('month')
.format(getFormat(newFormat)),
/**
* Возвращает начало текущего квартала
* @param newFormat
* @returns {string}
*/
beginQuarter: newFormat =>
moment()
.startOf('quarter')
.format(getFormat(newFormat)),
/**
* Возвращает конец текущего месяца
* @param newFormat
* @returns {string}
*/
endQuarter: newFormat =>
moment()
.endOf('quarter')
.format(getFormat(newFormat)),
/**
* Возвращает начало текущего года
* @param newFormat
* @returns {string}
*/
beginYear: newFormat =>
moment()
.startOf('year')
.format(getFormat(newFormat)),
/**
* Возвращает конец текущего года
* @param newFormat
* @returns {string}
*/
endYear: newFormat =>
moment()
.endOf('year')
.format(getFormat(newFormat)),
};
const dateFunctions = {
addFormat: overrideFormat => {
formats = overrideFormat;
},
getFns: () => fns,
};
export default Object.freeze(dateFunctions);