Изучаю js и передо мной возникла задача создать функцию форматирования даты.
Скажите пожалуйста, насколько грамотным является данное решение?
// Выводим дату в преобразованном виде
function formatDate(date) {
let day = date.getDate();
let month = date.getMonth();
let year = date.getFullYear();
day < 10 ? day = `0${day}` : day;
month < 10 ? month = `0${month}` : month;
year % 100 !== 0 ? year = year.toString().slice(2) : year;
return `${day}.${month}.${year}`;
};
// Обертка для основной функции
formatDate = defineType(formatDate);
// Определяем тип входных данных и возвращаем новую дату в соответствии с ними
function defineType(f) {
return function(date) {
let newDate;
if (date.toLowerCase) {
let dateElems = date.split('-');
newDate = new Date(...dateElems);
};
if (typeof date === 'number') {
newDate = new Date(date * 1000);
};
if (Array.isArray(date)) {
newDate = new Date(...date);
};
if (date.getDate) {
date.setMonth(date.getMonth() + 1);
return f.call(this, date);
};
return f.call(this, newDate)
};
};
console.log(formatDate('2011-10-02')); // 02.10.11
console.log(formatDate(1234567890)); // 14.02.09
console.log(formatDate([2014, 1, 1])); // 01.01.14
console.log(formatDate(new Date(2014, 0, 1))); // 01.01.14
Можно проще https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
var a = new Date();
a.toLocaleDateString({day: '2-digit', month: '2-digit', year: '2-digit'});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Правильно ли я понимаю, что в этом коде в 1-м варианте так как у стрелочных функций нету this она берет this у "родителя" , а во 2-м варианте this вообще...
Подскажите пожалуйста почему этот простейший скрипт выводит ошибку:
Как определить пересечение графиков работы клиентов? Например, если первый клиент работает с 7 до 15, а второй с 6 до 10, то пересечением будет...