@maitre

Насколько правилен такой вывод даты и времени в JS?

При добавлении сообщения необходимо вывести дату и время сообщения в формате DD MM YY hh:mm, выводит: "11 ноя 17 11:18", все ок. Хочу спросить, насколько такой код правилен и красив, или есть более элегантный/короткий способ сделать вывод даты в таком формате?

var times = new Date(),
		year = times.getFullYear(),
		month = times.getMonth() + 1,
		day = times.getDate(),
		hours = times.getHours(),
		minutes = times.getMinutes();

	year = year.toString().slice(2, 4);

	switch (month) {
		case 1: month = 'янв'; break;
		case 2: month = 'фев'; break;
		case 3: month = 'мар'; break;
		case 4: month = 'апр'; break;
		case 5: month = 'май'; break;
		case 6: month = 'июн'; break;
		case 7: month = 'июл'; break;
		case 8: month = 'авг'; break;
		case 9: month = 'сен'; break;
		case 10: month = 'окт'; break;
		case 11: month = 'ноя'; break;
		case 12: month = 'дек'; break;
	}

	if (day < 10) { day = '0' + day; }
	if (hours < 10) { hours = '0' + hours; }
	if (minutes < 10) { minutes = '0' + minutes; }

	var time = day + " " + month + " " + year + " " + hours + ":" + minutes;


И еще один вопрос, хочу этот код вывода даты разместить не в основном коде, а завернуть в функцию getTime(), чтобы можно было эту функцию вызывать в любом месте кода. Завернул код который выше в функцию getTime(), добавил return time и вынес в глобальную область, а в том месте где эта функция была сделал вызов getTime() - не работает. То переменную не видит, то она не определена и т.д. Пробовал сделать var getTime = function(){...} и все равно не работает. В чем проблема, подскажите
  • Вопрос задан
  • 430 просмотров
Решения вопроса 1
dpigo
@dpigo
Front-end developer
Во-первых у вас не точная реализация задания. Формат у вас получается не DD MM YY, а DD MMM YY.
Во-вторых так будет нагляднее и компактнее:

https://jsbin.com/wexozez/edit?js,console

function getTheTime() {

  function twoCharInt(anInt) {
    return anInt < 10 ? '0' + anInt : anInt;
  }

const times = new Date();
const year = times.getFullYear().toString().slice(2, 4);
const months = ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
const month = months[times.getMonth()];
const day = twoCharInt(times.getDate());
const hours = twoCharInt(times.getHours());
const minutes = twoCharInt(times.getMinutes());

  return day + ' ' + month + ' ' + year + ' ' + hours + ':' + minutes;
}

console.log(getTheTime());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы