Как отображать даты только в угловых материалах? - PullRequest
0 голосов
/ 11 июня 2018

Проблема в том, что я хочу отображать только дату, например, дату рождения, где часовой пояс не важен.мой API сериализует дату в формате iso_8601.Средство выбора даты продолжает отображать дату за день до этого, потому что ему не хватает часового пояса.Что за работа здесь? Есть ли способ заставить средство выбора даты игнорировать часовой пояс, или я должен изменить свой вывод даты API?т. е.

выход API,

{
    "aliasName": null,
    "patientDob": "1985-04-24",
    "contactAddress": null,
    "streetNo": null,
}

Отображение выбора даты как 23.04.1985, // Я использую DateAdapter для отображения даты в соответствии с локалью.

Если я снова выберу дату, значение, выбранное датчиком выбора даты, будет выглядеть следующим образом: 1985-04-24T08:00:00.000Z

Пример здесь ,

1 Ответ

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

Мой обходной путь, на данный момент, следующий:

на стороне клиента (API сериализует только дату ISO, т.е. «1985-04-24») Я написал эту функцию,

function formatApiLocalDate(date: Date): Date {
  if (date) {
    return new Date(moment(date.toString()).format());
  }
  return null;
}

ИЛИ

На стороне сервера (API сериализует DateTimeOffset, т.е. "1985-04-04T23: 59: 59-08: 00"). В моем случае я использую NodaTime, поэтому его OffsetDateTime, я написал этот метод расширения,

public static OffsetDateTime ToOffsetDateTimeUTC (this LocalDate localDate, string tzId) {
    LocalTime time = new LocalTime (23, 59, 59);
    LocalDateTime localDateTime = (localDate + time);
    DateTimeZone dtz = DateTimeZoneProviders.Tzdb[tzId];
    Offset offset = dtz.GetUtcOffset (Instant.FromUtc (localDateTime.Year, localDateTime.Month, localDateTime.Day, time.Hour, time.Minute));
    return new OffsetDateTime (localDateTime, offset);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...