Angular 5 неправильно анализирует метки времени от json - PullRequest
0 голосов
/ 29 июня 2018

У меня есть рабочее (в производстве) веб-приложение (материал + угловой 5 (5.2.11)). Также у меня есть API, написанный на .dot core 2 (C #) с использованием Nancy FX и newtonsoft json.

Проблема:

БД (mariaDB работает на сервере Ubuntu): у меня есть это значение: 2018-05-16 20:42:36 для записи.

Вызов конечной точки дает правильный JSON:

{ "метка времени": "2018-05-16T20: 42: 36Z"}

(другие поля были удалены для здравомыслия)

В приложении Angular, которое я использую:

... вернуть this._http.get (this.endpoint + '/' + uuid, {headers: this._getHeaders}). catch (this.handleError);

Где <T> представляет модель, включающую timedate: Date; в качестве свойства.

Воспользовавшись услугой:

this._dataService.getByUuid (uuid) .subscribe (result => { console.log (результат); });

дает:

Object {timedate: "2018-05-16 08:05:36"}

Итак, времени не хватает в формате AMPM, и я не могу правильно его отобразить. {{element.timedate | date: 'dd/MM/yyyy HH:mm' }} ничего не делает, поскольку timedate это просто пустая строка.

Что я пробовал:

Проблема с любым полем даты и времени. JSON всегда включен, и поэтому база данных.

Любая помощь приветствуется

1 Ответ

0 голосов
/ 29 июня 2018

JSON не имеет типа Date (только массивы, числа, строка, объект, null и undefined), поэтому преобразователь из JSON в TypeScript не может знать, является ли это датой или простой строкой.

Вам необходимо анализировать (Date.Parse(yourString) или new Date(yourString)) свойство Date при каждой десериализации вашего объекта.

** Date.Parse и конструктор Date могут принимать как Date, так и строку, поэтому вам не нужно вводить проверку значения перед их использованием. *

...