Skip to content

Instantly share code, notes, and snippets.

@chrisryana
Created April 28, 2020 21:32
Show Gist options
  • Save chrisryana/b129df6f531262dd16f2b837b074ad26 to your computer and use it in GitHub Desktop.
Save chrisryana/b129df6f531262dd16f2b837b074ad26 to your computer and use it in GitHub Desktop.
Трансформер для даты с использованием библиотеки dayjs
// раскладывает полученную дату на запчасти и возвращает ее в виде объекта с доп данными
export const destructDate = masterDate => {
const now = dayjs();
const dayNames = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; // тк в dayjs 0 это воскресенье
const dayNamesShort = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'];
const monthsNames = [
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Октябрь',
'Ноябрь',
'Декабрь',
];
const monthsNamesA = [
'Января',
'Февраля',
'Марта',
'Апрель',
'Мая',
'Июня',
'Июля',
'Августа',
'Сентября',
'Октября',
'Ноября',
'Декабря',
];
const monthsNamesShort = ['Ян', 'Фв', 'Мр', 'Ап', 'Ма', 'Ин', 'Ил', 'Ав', 'Сн', 'Ок', 'Нб', 'Дк'];
const currentDay = dayjs(masterDate);
const retVal = {
dt: currentDay.format('DD.MM.YYYY'),
yy: currentDay.format('YYYY'),
mm: currentDay.format('MM'),
dd: currentDay.format('DD'),
time: currentDay.format('HH:mm'),
fullTime: currentDay.format('HH:mm:ss'),
day: dayNames[currentDay.day()],
dayShort: dayNamesShort[currentDay.day()],
month: monthsNames[currentDay.month()], // month начинается с 0
monthA: monthsNamesA[currentDay.month()],
monthShort: monthsNamesShort[currentDay.month()],
};
const masterYY = parseInt(currentDay.format('YYYY'), 10);
const masterMM = parseInt(currentDay.format('MM'), 10);
const masterDD = parseInt(currentDay.format('DD'), 10);
const nowYY = parseInt(now.format('YYYY'), 10);
const nowMM = parseInt(now.format('MM'), 10);
const nowDD = parseInt(now.format('DD'), 10);
retVal.wordDate = null;
retVal.isYY = masterYY === nowYY; // этот ли год
retVal.isMM = masterMM === nowMM; // этот ли месяц
retVal.isDD = masterDD === nowDD; // этот ли день
retVal.isToday = retVal.isYY && retVal.isMM && retVal.isDD; // дата == сегодня
if (retVal.isYY && retVal.isMM) {
const diff = nowDD - masterDD;
if (diff === 0) {
retVal.wordDate = APP_CONF.dateWords.TODAY;
} else if (diff === -1) {
retVal.wordDate = APP_CONF.dateWords.TOMORROW;
} else if (diff === -2) {
retVal.wordDate = APP_CONF.dateWords.AFTERTOMORROW;
} else if (diff === 1) {
retVal.wordDate = APP_CONF.dateWords.YESTERDAY;
} else if (diff === 2) {
retVal.wordDate = APP_CONF.dateWords.BEFOREYESTERDAY;
}
}
return retVal;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment