Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переписать функцию в ES6 (https://javascript.ru/forum/misc/77772-perepisat-funkciyu-v-es6.html)

DarkPhoenix 18.06.2019 19:47

Переписать функцию в ES6
 
const timeEveryOneMinute = () => {
	let Data = new Date();
	let Hour = Data.getHours();
	let Minutes = Data.getMinutes();
		console.log("Текущее время: " + Hour + ":" + Minutes + " ");
		setTimeout(timeEveryOneMinute, 1000 * 60);
}
timeEveryOneMinute();


На курсах просят переписать в стиле ES6.
Прошу Гуру форума помочь.
Спасибо!

рони 18.06.2019 20:01

DarkPhoenix,
вы спросите, чего в супе коде не хватает?

рони 18.06.2019 20:32

DateTimeFormat
 
DarkPhoenix,
const timeEveryOneMinute = () => {
	const data = new Date(),
	time = new Intl.DateTimeFormat("ru", {
        hour: "2-digit",
        minute: "2-digit"
    }).format(data);
		console.log(`Текущее время: ${time}`);
		setTimeout(timeEveryOneMinute, 1000 * 60);
}
timeEveryOneMinute();

Aetae 18.06.2019 23:11

Оно и так стиле es6.

А в современном стиле оно как-то так:
import moment from 'moment'
import timer from 'some-super-timer'
import logger from 'some-super-logger'

timer.every(60).run(step => logger.log(
    moment().format("Текущее время: HH:mm")
));
(*код вымышлен, все совпадения случайны:) )

Malleys 19.06.2019 01:08

https://github.com/airbnb/javascript...ng-conventions

рони 19.06.2019 10:28

Malleys,
а можно словами или примером, для наглядности, что не так с кодом?

Dilettante_Pro 19.06.2019 11:09

рони,
Можно предположить, что let Data и let Time противоречат этому:
Цитата:

Use PascalCase only when naming constructors or classes

рони 19.06.2019 11:29

Dilettante_Pro,
поправил #3

Malleys 19.06.2019 11:50

Цитата:

Сообщение от рони
а можно словами или примером, для наглядности, что не так с кодом?

Обычно в JavaScript имена даются также, как в Java, но поскольку автор может не знать Java, или не понять, почему был упомянут Java, то я привёл руководство от Airbnb.

Я думаю, автору интересна последняя версия JavaScript, описанная в EcmaScript2019...

Конкретно пример автора может быть записан так...
(function timeEveryOneMinute() {
	const date = new Date();
	const hours = String(date.getHours()).padStart(2, "0");
	const minutes = String(date.getMinutes()).padStart(2, "0");

	console.log(`Текущее время: ${hours}:${minutes}`);
	setTimeout(timeEveryOneMinute, 1000 * 60);
})();


Пример рони так...
(function timeEveryOneMinute() {
	const date = new Date();
	const timeOptions = {
		hour: "2-digit",
		minute: "2-digit"
	};
	const time = date.toLocaleTimeString("ru", timeOptions);
	
	console.log(`Текущее время: ${time}`);
	setTimeout(timeEveryOneMinute, 1000 * 60);
})();


Пример Aetae возможен, но требует инструментов трансформации кода, сборки, наличие node.js (использование проприетарных импортов)

Malleys 19.06.2019 14:41

Цитата:

Сообщение от Poznakomlus
зачем здесь мусор для работы с датами,
неужели replace недостаточно?

console.log(String(new Date()).replace(/^.*?(\d+:\d+).*$/, `Текущее время: $1`));

Poznakomlus, 🙈🙉🙊


Часовой пояс GMT +3, время: 15:05.