Created
April 28, 2020 21:32
-
-
Save chrisryana/b129df6f531262dd16f2b837b074ad26 to your computer and use it in GitHub Desktop.
Трансформер для даты с использованием библиотеки dayjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// раскладывает полученную дату на запчасти и возвращает ее в виде объекта с доп данными | |
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