Я тоже пытаюсь отформатировать дату со временем, но это вызывает ошибку. Я отправляю запрос следующим образом:
created = this.datePipe.transform(dateCreated, 'yyyy-MM-ddTHH:mm');
Мне нужно время, потому что я использую службу, которой требуется этот параметр со временем для точной фильтрации данных.
Следующее изображение - ошибка:
Показать еще код. Когда вы пытаетесь установить dateCreated?
Я получаю это из контрольной даты для angular. Данные для этой переменной: чт, 26 июля 2018 г., 15:30:00 GMT-0500 (hora estándar de Colombia). Это дата, которую пытается отформатировать
var created: строка = значение ['startDate']. toString (); created = created.substring (0, created.indexOf ('GMT')); пусть dateCreated = новая дата (создана); console.info (dateCreated); created = this.datePipe.transform (dateCreated, 'yyyy-MM-ddTHH: mm');
Я не вижу проблем с вашим кодом. stackblitz.com/edit/angular-datepipe-amit?file=src/app/…
что, если dateCreated - это let dateCreated = "2021-06-29 18:24:48.000000" <p title = "{{dateCreated | date}}">{{dateCreated | date}}</p>





Принимать только форматы даты
Year:
YYYY (eg 1997)
Year and month:
YYYY-MM (eg 1997-07)
Complete date:
YYYY-MM-DD (eg 1997-07-16)
Complete date plus hours and minutes:
YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
Complete date plus hours, minutes and seconds:
YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
Complete date plus hours, minutes, seconds and a decimal fraction of a
second
YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
Просто замените все символы "/" в дате на "-":
dateCreated = formatDate(`${dateCreated}`.replaceFunction('/','-'),'full','es-CO');
Эта ошибка возникает из-за того, как даты работают в angular, потому что он не может анализировать даты, содержащие косые черты, без специального синтаксического анализатора.
Или вы все равно можете определить собственный синтаксический анализатор, используя date-fns или что-то в этом роде.
Pdta: Я не буду вдаваться в подробности функций замены, здесь это не входит в объем ответа, поэтому не имеет значения, как бы вы заменили строку даты.
Я столкнулся с этой же проблемой при попытке передать строку, которая была в формате даты и времени MySQL, в функцию преобразования.
Заимствовав у Jai Kumaresh's отвечать, я смог исправить эту проблему, сначала преобразовав строку даты и времени MySQL в формат, распознаваемый ISO, выполнив следующие действия:
dateCreated = dateCreated.replace(' ', 'T');
created = this.datePipe.transform(dateCreated, 'yyyy-MM-ddTHH:mm');
Пока я этого не сделал, Safari выдавал мне эту ошибку, хотя Chrome и Firefox работали. С помощью этого исправления проблема была решена в каждом из этих браузеров.
Меня устраивает
Кажется, что
dateCreatedне является действительной датой ... что такоеdateCreated? Откуда ты это взял?