All Downloads are FREE. Search and download functionalities are using the official Maven repository.

utils.globalFnDate.js Maven / Gradle / Ivy

import moment from 'moment/moment'

let formats = {
    dateFormat: 'yyyy-MM-dd',
    timeFormat: '00:00:00',
}

/**
 * Функция хелпер для соединения форматов
 * Берет формат из аргумента или глобальной переменной
 * @param overrideFormat
 * @returns {string}
 */
const getFormat = overrideFormat => `${(overrideFormat || formats).dateFormat}T${
    (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}
     */
    // eslint-disable-next-line sonarjs/no-identical-functions
    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)




© 2015 - 2025 Weber Informatics LLC | Privacy Policy