Функция форматирования даты

221
14 июня 2018, 00:20

Изучаю 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

Answer 1

Можно проще 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'});
READ ALSO
Контекст в JS (this)

Контекст в JS (this)

Правильно ли я понимаю, что в этом коде в 1-м варианте так как у стрелочных функций нету this она берет this у "родителя" , а во 2-м варианте this вообще...

216
Vue router необязательный фрагмент

Vue router необязательный фрагмент

Имеется вот такой роут:

222
Почему не подключается rxjs6 из cdn?

Почему не подключается rxjs6 из cdn?

Подскажите пожалуйста почему этот простейший скрипт выводит ошибку:

186
Пересечение диапазонов

Пересечение диапазонов

Как определить пересечение графиков работы клиентов? Например, если первый клиент работает с 7 до 15, а второй с 6 до 10, то пересечением будет...

212