Вы знаете этот кусок дерьмового кода, который всегда заставляет вас съеживаться? Что-то вроде месяцев = [‘Jan’, ‘Feb’ ….]; dateString = date.day () + » + months [date.month ()];
Да, этот кусок кода. Давай поговорим об этом .
Это отстой. Существует особый круг ада для людей, которые делают это, и все же разработчики JavaScript вынуждены делать это все время!
В JavaScript это единственный способ сделать это. Я не обосрался тебе.
Пару дней назад я поймал себя на том, что пишу такой код, и у меня в голове зазвенели красные флаги, сигнализация и воздушные налеты. Я чувствовал себя так, будто тот убийца из пословиц, читающий мой код, который знает, где я живу, уже дышал мне в шею.
Страшная ситуация такая.
Но когда я искал элегантный способ заставить свидание и время в строку , я обнаружил, что в целом ситуация довольно отсутствует. Оказывается, в JavaScript нет встроенной функции strftime, хотя он удивительно блестящий в преобразовании строк в собственные представления.
Строка -> Дата
Есть строка? Хотите свидание? У тебя есть спина, братан!
// all of this correctly returns a millisecond timestamp since unix epoch // the string argument can also be passed to the date constructor by the way (returns a correct Date object) Date.parse("Aug 9, 1995") Date.parse("Wed, 09 Aug 1995 00:00:00 GMT") Date.parse("Wed, 09 Aug 1995 00:00:00") Date.parse("Thu, 01 Jan 1970 00:00:00 GMT") Date.parse("Thu, 01 Jan 1970 00:00:00") Date.parse("Thu, 01 Jan 1970 00:00:00 GMT-0400")
Дата -> Строка
Есть дата и хотите строку? Ты дерьмо из удачи сын.
Практически единственная конвертация даты в строку, которую изначально поддерживает javascript, — это возвращение строки локали, которая является нестандартной и сильно варьируется от компьютера к компьютеру, и форм стандартизированного времени ISO . Это может сделать это и только это многими способами даже!
> var d = new Date() > d Mon, 12 Dec 2011 11:28:55 GMT > d.toString() 'Mon Dec 12 2011 12:28:55 GMT+0100 (CET)' > d.toDateString() 'Mon Dec 12 2011' > d.toISOString() '2011-12-12T11:28:55.401Z' > d.toJSON() '2011-12-12T11:28:55.401Z' > d.toGMTString() 'Mon, 12 Dec 2011 11:28:55 GMT' > d.toLocaleDateString() 'Monday, December 12, 2011' > d.toLocaleString() 'Mon Dec 12 2011 12:28:55 GMT+0100 (CET)' > d.toLocaleTimeString() '12:28:55' > d.toString() 'Mon Dec 12 2011 12:28:55 GMT+0100 (CET)' > d.toTimeString() '12:28:55 GMT+0100 (CET)' > d.toUTCString() 'Mon, 12 Dec 2011 11:28:55 GMT'
Обратите внимание, что ни одна из этих функций не принимает параметр формата? Конечно, вы можете получить эти строки и разбить их на части, чтобы создать строку, отформатированную по вашему вкусу … но я не уверен, что это идеальный подход.
И давайте даже не будем пытаться навязать 12-часовой формат времени из этой вещи. Возможно, если ваш компьютер находится в США, localeString вернет это?
Однако мне удалось найти плагин jquery, который реализует грубую функцию strftime , хотя, кажется, он не работал активно в течение последних трех лет, и многие вещи отсутствуют.
Какая?
Так что у вас есть это. Эпический JavaScript и все же ужасно плохая поддержка преобразования даты-> строки.
Что вы думаете об экосистеме javascript, которая это терпит? Из-за этого, должно быть, бесчисленные разработчики внедряли дерьмовый код, и никто не думал жаловаться? Никто не зашел так далеко, чтобы предложить добавить в язык простую функцию strftime? Большинство популярных языков, кажется, имеют это в своей стандартной библиотеке …
С http://swizec.com/blog/javascripts-lack-of-strftime/swizec/3164