Как передать и обработать дату из webpi asp.net в угловой компонент? - PullRequest
0 голосов
/ 08 февраля 2019

Я отправляю дату из веб-интерфейса asp.net следующим образом:

SubmitDate.ToString()

, и она возвращает:

12/13/2018 8:24:20 AM

в угловом компоненте, и я использую угловую трубу дляпоказывать дату в формате «12 декабря 2018 года», она работает нормально с моим текущим форматом даты на ПК, но когда я меняю формат даты на своем ПК, выдает ошибку, как показано ниже

'Unable to convert "18/12/13 1:54:20 PM" into a date' for pipe 'DatePipe'

Пожалуйста, помогитепонять это, и я попробовал эти способы

SubmitDate.ToLocalTime().ToString()

SubmitDate.ToUniversalTime().ToString()

, но безуспешно.Как передать и обработать дату из веб-API в угловой компонент?

С угловой трубой:

solution.SubmitDate | date:'MMMM d, yyyy'

Ответы [ 4 ]

0 голосов
/ 10 апреля 2019

Пожалуйста, попробуйте это.Это работает для меня.

var utcDate1 = new Date (Date.UTC (96, 1, 2, 3, 4, 5));// ожидаемый результат: пт, 02 февраля 1996 03:04:05 GMT

0 голосов
/ 08 февраля 2019

Вы можете использовать перегрузку DateTime.ToString (), которая принимает параметр, позволяющий вам форматировать дату.

Например, чтобы отформатировать до даты, которая работает для вас в данный момент, вы можете использовать:

var date = new DateTime(2018, 12, 13, 8, 24, 20);
Console.WriteLine(date.ToString("MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture));
//12/13/2018 8:24:20 AM

CultureInfo.InvariantCulture используется здесь, чтобы не учитывать форматирование / локализацию для конкретной культуры.

Дополнительная документация по форматированию даты - https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

0 голосов
/ 08 февраля 2019

Формат даты можно исправить на стороне API SubmitDate.ToString("MMM d, yyyy");

0 голосов
/ 08 февраля 2019

Javascript имеет объект даты.Если вы отправляете дату в принятом формате, вы можете автоматически разобрать ее в объекте даты javascript.

Объявите ваш интерфейс ответа, как этот, для автоматического разбора.

export interface something {
  time: Date;
}

От asp.net вам необходимо убедиться, что вы отправляете в формате, понятном JavaScript.Из документов принятые форматы могут выглядеть следующим образом:

December 17, 1995 03:24:00

или

1995-12-17T03:24:00

Проблема заключается в том, что asp.net и javascript имеют разные стандарты для форматов даты,

Если вы хотите создать решение на стороне клиента [JavaScript]:

function ToJavaScriptDate(value) {
  var pattern = /Date\(([^)]+)\)/;
  var results = pattern.exec(value);
  var dt = new Date(parseFloat(results[1]));
  return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

Но лучший способ - это решение на стороне сервера.Вот функция, которая возвращает истинное время UTC [C #].

return DateTime.UtcNow
               .Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
               .TotalMilliseconds;

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

...