Переписать функцию в 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. Прошу Гуру форума помочь. Спасибо! |
DarkPhoenix,
вы спросите, чего в |
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(); |
Оно и так стиле 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,
а можно словами или примером, для наглядности, что не так с кодом? |
рони,
Можно предположить, что let Data и let Time противоречат этому: Цитата:
|
Dilettante_Pro,
поправил #3 |
Цитата:
Я думаю, автору интересна последняя версия 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 (использование проприетарных импортов) |
Цитата:
|
Poznakomlus,
Цитата:
|
Цитата:
![]() Это означало, что у меня просто слов нет насчёт того, что вы написали в теме, где обсуждался стиль кода! Я не знаю, почему вы решили, что я негативно отношусь к вам, хотя я и не разделяю вашу точку зрения ни относительно кода, который вы написали, ни относительно того, что нужно не использовать представляемые методы для работы с датой, а лучше написать костыль вместо использования существующего метода, который позволяет получить строковое представление времени из даты без лишних усилии. Посмотрите на алгоритм...
Ни автор, ни я, ни вы не написали чего-то сверх этого... Метод toLocaleTimeString делает именно то, как он назван... преобразует дату к строковому представлению, содержащему показание времени в каком-либо формате. (function timeEveryOneMinute() { const date = new Date(); // (1) const timeOptions = { hour: "2-digit", minute: "2-digit" }; const time = date.toLocaleTimeString("ru", timeOptions); // (2) console.log(`Текущее время: ${time}`); // (3) setTimeout(timeEveryOneMinute, 1000 * 60); })(); По сравнению с этим кодом, совершенно не уместен ваш код, поскольку в нём весьма не очевидно происходящее... хотя он и выполняет в целом ту же самую работу... Ваш код вызывает намного больше вопросов... Например...
Цитата:
console.log(String(new Date()).replace(/^.*?(\d+:\d+).*$/, `Текущее время: $1`)); Зачем вам создавать объект даты, если вы его не используете его методы, а только хотите получить строковое представление от toString()? Почему нельзя было возпользоваться для этой цели функцией Date? console.log(Date().replace(/^.*?(\d+:\d+).*$/, `Текущее время: $1`)); А имеет ли какое-то значение то, что вы использовали шаблонную строку (``), а не обычную ("" или '')? Учитывая формат строки, возвращаемой функцией Date... console.log(Date().replace(/.*?(\d+:\d+).*/, "Текущее время: $1")); А нужно ли регулярное выражение? Замена? console.log("Текущее время: " + Date().slice(16,21)); Цитата:
Часть кода на JavaScript const date = new Date(); const timeOptions = { hour: "2-digit", minute: "2-digit" }; const time = date.toLocaleTimeString("ru", timeOptions); console.log(`Текущее время: ${time}`); Часть кода на С# DateTime date = DateTime.Now; String time = date.ToString("HH:mm"); Console.WriteLine($"Текущее время: {time}"); Часть кода на Java (нужны import java.text.SimpleDateFormat; и import java.util.Date; ) Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("HH:mm"); String time = formatter.format(date); System.out.println("Текущее время: " + time); Простите, но ваша идея на других языках, также костыльна (если вообще возможна), плохо поддерживаема и не очевидна! Код же который я привёл, в принципе переводим на другие языки, переводим с других языков и понимаем и читаем! То, что вы предложили, роднится по синтаксису с языком J. Я ещё удивляюсь, что вы не предложили перейти на него с слоганами, типа, какая краткость, какая лаконичность... И почему их так бомбит, когда им указывают, что они пишут write-only код? Учитывая такое количество вопросов, не учтённых деталей, уничижительное высказывание и поощрение к написанию плохо поддерживаемого кода, а также ваши усилия, чтобы я заметил ваши высказывания, я посчитал необходимым оставить негативный отзыв к вашему ответу! В чём смысл поощрения того, что в конечном счёте порождает вообще не понимаемое, не читаемое и невозможное поддерживать. В современных языках как раз избегают писать длинные выражения в одну строку. Гораздо понятнее и удобнее разбивать сложный алгоритм на несколько более простых, которые затем комбинируются понятными операторами. Код, который я привёл (который аж в пять раз больше, какой ужас!) может понять практически любой программист, имеющий минимальные навыки хотя бы в одном современном языке, не обязательно в JS. Программист, начинающий изучать JS, но без знании других языков, это тоже, скорее всего, поймёт, причём очень быстро. А код, который вы показали, непонятен не только непосвящённым (вот откуда можно понять, что replace от строки даты, содержит то, что описывает регулярное выражение, да ещё происходит полная замена строки, а?), но я боюсь, и начинающим изучать JS тоже! |
Цитата:
Вычислил диверсанта) |
Цитата:
Вы совершенно не поняли, почему вас минусуют! Вы представляете, как будто у вас там какие-то магические вычисления... А если ваш способ представить через переменные, то видно, что вы делаете тоже самое... var date = new Date(); var timeExtractor = /^.*?(\d+:\d+).*$/; var time = String(date).replace(timeExtractor, "$1"); console.log(`Текущее время: ${time}`); Я удивлен, насколько плохо у вас развито воображение, что вы не смогли в моём коде увидеть строчку в своём стиле... console.log(`Текущее время: ${new Date().toLocaleTimeString("ru", {hour:"2-digit",minute:"2-digit"})}`); Цитата:
UPD Ели под числом вы имели в ввиду дату, то мне не понятны ваши претензии к преобразованию её к строке, ведь вы делаете тоже самое... Вы преобразуете дату к строке и затем ту строку ещё преобразуете, чтобы из неё извлечь время... Я же преобразую дату сразу к строке с нужным временем... UPD2 Цитата:
|
Цитата:
Цитата:
Цитата:
Федя😜, а у вас жизнь сплошной переход по ссылкам? 🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳 😈😇😈😇😈😇😈😇😈😇😈😇😈😇😈 😜 🌚🌚🌚 😅😅😅 Цитата:
Цитата:
Цитата:
Цитата:
Привет!👋👋👋 Привет, Федя! Ты там не горюй, тебя любят и обожают! 👑😻👑😻👑 Всё-таки вашими умениями являются JavaScript👍, Joomla!, MySQL👍, Node.js👍, PHP👍, PostgreSQL, не говоря уже о раннем увлечении Basic и VB! 🔥👌😎 😅😅😅 Ох, Федя, Федя... 😜 ну ты и даёшь! 🙈🙉🙊 😅😅😅 |
Часовой пояс GMT +3, время: 02:12. |