Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.06.2019, 22:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Poznakomlus,
Цитата:
Until ECMAScript 2018 (edition 9), the format of the string returned by Date.prototype.toString was implementation dependent. Therefore it should not be relied upon to be in the specified format.
На практике конечно проверять лень, в чём там разница.)
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 21.06.2019, 00:56
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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

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


Это означало, что у меня просто слов нет насчёт того, что вы написали в теме, где обсуждался стиль кода! Я не знаю, почему вы решили, что я негативно отношусь к вам, хотя я и не разделяю вашу точку зрения ни относительно кода, который вы написали, ни относительно того, что нужно не использовать представляемые методы для работы с датой, а лучше написать костыль вместо использования существующего метода, который позволяет получить строковое представление времени из даты без лишних усилии.

Посмотрите на алгоритм...
  • Получить текущее время (1)
  • Преобразовать его к строковому представлению (2)
  • Напечатать на экран (3)

Ни автор, ни я, ни вы не написали чего-то сверх этого...

Метод 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);
})();


По сравнению с этим кодом, совершенно не уместен ваш код, поскольку в нём весьма не очевидно происходящее... хотя он и выполняет в целом ту же самую работу...

Ваш код вызывает намного больше вопросов... Например...
  • Почему нужно искать в строковом представлении даты текущее время, а не использовать готовое решение, которое учитывает некоторые детали относительно региона, в котором показывают время? (Поддерживается ядром языка)
  • Учитывая, что такие методы существуют, не хотели ли вы показать якобы ущербность JS? Не хотели вы продвигать другой язык программирования, и специально подготовили почву для того, чтобы на примере другого языка программирования показать, что там это решается очевидно и код читаемый, а вот в JS это совершенно нечитаемо?
  • Почему вы решили, что ваш код понятен и читаем и стилистически лучше того, что уже было написано в теме?

Сообщение от Poznakomlus
зачем здесь мусор для работы с датами,
Существуют методы для работы с датой... почему вы называете их мусором, совершенно не понятно! Мусором выглядит именно ваш способ, поскольку в нём принимаются не очевидные решения!

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 тоже!
Ответить с цитированием
  #13 (permalink)  
Старый 21.06.2019, 04:54
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,004

Сообщение от Malleys
Учитывая, что такие методы существуют, не хотели ли вы показать якобы ущербность JS? Не хотели вы продвигать другой язык программирования, и специально подготовили почву для того, чтобы на примере другого языка программирования показать, что там это решается очевидно и код читаемый, а вот в JS это совершенно нечитаемо?

Вычислил диверсанта)
Ответить с цитированием
  #14 (permalink)  
Старый 21.06.2019, 16:36
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Poznakomlus
Именно так. Вы пишите код ради кода. В пять раз больше, имея стандартно получить строку и отдать на выходе строку, вы используете преобразование. при этом кода становится больше.
Вы хоть сами понимаете, что вы пишите? А вы что, не используете преобразование?

Вы совершенно не поняли, почему вас минусуют!

Вы представляете, как будто у вас там какие-то магические вычисления... А если ваш способ представить через переменные, то видно, что вы делаете тоже самое...

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"})}`);


Сообщение от Poznakomlus
Вы берёте число и преобразовываете в строку, при этом вы легко можете получить строку одним из методов
Какое число? Может вам стоит почитать учебник Ильи Кантора... https://learn.javascript.ru/datetime...ie-i-vyvod-dat

UPD Ели под числом вы имели в ввиду дату, то мне не понятны ваши претензии к преобразованию её к строке, ведь вы делаете тоже самое... Вы преобразуете дату к строке и затем ту строку ещё преобразуете, чтобы из неё извлечь время... Я же преобразую дату сразу к строке с нужным временем...

UPD2
Сообщение от Poznakomlus
перестаньте медитировать. откройте глаза, форум js
какой бы там язык не был, ваш код похож на вывод от Google Closure Compiler

Последний раз редактировалось Malleys, 21.06.2019 в 16:54.
Ответить с цитированием
  #15 (permalink)  
Старый 21.06.2019, 21:52
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Poznakomlus
у меня нет времени тратить свое время на подобных идиотов🌚 объясняя что одна строка не 5😳
Я для этого использую Babel🚀 или Google Closure Compiler🚀... 😎😎😎 А по сути у вас тоже 5, просто вы 🚫не🚫 написали комментарии🏷, что делает ваш код! 😜😊😁😃😜😂😉😜

Сообщение от Poznakomlus
одна строка не 5
А модульность не 300 символов шириной в 2350 строк... Видел я эти проекты на PHP в вашем стиле... 😉 Хотя те скудные файлы на github с вашим кодом на php показывают, что вы так не пишите! 😉 А зачем тут пропагандировать😕? 😜 😅😅😅

Сообщение от Poznakomlus
Предлагаю вам сходить🕳
😱😵😖😖😶😶
Федя😜, а у вас жизнь сплошной переход по ссылкам?
🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳🕳
😈😇😈😇😈😇😈😇😈😇😈😇😈😇😈 😜 🌚🌚🌚 😅😅😅

Цитата:
Вы утомили собеседника глупыми вопросами, просьбами или советами.
Poznakomlus, вы писали 🚨🚨🚨«обоснуй свой -10»🌚 👎🔟👎и 🚨🚨🚨«какого Malleys, минусует где обоснования📝📢📝📣📝📒📣📓📔📗📚📚📚, слился?»🌚 Вы сами просили🙏, чтобы я написал вам ответ, а теперь возмущаетесь, что он есть!🌚 Три обезьянки 🙈🙉🙊 были реакцией на ваше «зачем здесь мусор🗑 для работы с датами». Почему вы решили, что это негативный комментарии, я не знаю! 😅😅😅

Цитата:
Вы обидели собеседника неосторожным высказыванием: задели его религиозные, политические, музыкальные и прочие взгляды и вкусы, либо иным образом вторглись в его внутренний мир и подвергли критике то, чем он дорожит.
Простите, я не знал, что для вас философия написания кода в одну строчку так дорога!🛐 Хотя стоит отметить что именно за ваши цитаты вида 🌚«я считаю ваш код говнокодом», 🌚«зачем здесь мусор🗑 для работы с датами», 🌚«учить других говнокодить💩📜» вам самим следовало бы перейти по ссылке🕳... 💩📜💩📜💩📜 Обычно «говнокод💩📜» решает только видимую часть проблемы. И проблема проявляется, когда его нужно дописать!👻🕳 😅😅😅

Цитата:
Вам намекают о том, что не вернут долг, не заплатят за работу, отказывают в сексуальной близости.
Цитата:
С вами просто не хотят общаться. Такое тоже бывает.
Зачем эти намёки🍆, переходы?😷 😅😅😅

Привет!👋👋👋 Привет, Федя! Ты там не горюй, тебя любят и обожают! 👑😻👑😻👑 Всё-таки вашими умениями являются JavaScript👍, Joomla!, MySQL👍, Node.js👍, PHP👍, PostgreSQL, не говоря уже о раннем увлечении Basic и VB! 🔥👌😎 😅😅😅

Ох, Федя, Федя... 😜 ну ты и даёшь! 🙈🙉🙊 😅😅😅
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переписать функцию map es6 под ie11? giwuf Javascript под браузер 7 21.02.2019 15:29
Переписать функцию без jquery Artur_Hopf Общие вопросы Javascript 4 19.02.2019 13:14
Переписать функцию из jQuery в нативный JavaScript MC-XOBAHCK jQuery 8 06.06.2018 16:53
Компактно переписать функцию AlexTrader Общие вопросы Javascript 34 07.03.2017 14:28
Через argument.callee не получается переписать функцию. Jurasmi Общие вопросы Javascript 2 23.03.2011 12:54