Angular (v4) DatePipe с UTC в качестве времени по местному времени - PullRequest
0 голосов
/ 05 декабря 2018

В отличие от более новых версий Angular, Angular 4 DatePipe , похоже, не поддерживает передачу в часовом поясе в качестве параметра.

У меня есть бэкэнд-сервис, возвращающий отформатированную строку даты-времени ISO 8601без часового пояса (например, 2018-12-04T19:01:50.062) - сохраняется и возвращается как UTC.

Используя DatePipe, как я могу показать дату и время как местное время пользователя?

1 Ответ

0 голосов
/ 05 декабря 2018

Angular 4's DatePipe поддерживает суффикс зоны UTC суффикс ('Z'), поэтому, если значение, которое вы передаете в канал, является временем и временем UTC, тогда ваш бэкэнд-сервисВы можете вернуть ваше время с указателем зоны 'Z' или вы можете добавить Z, и оно покажет время по местному времени пользователя.

Например,

<span class="date">{{ value + 'Z' | date:'short' }}</span>

ПРИМЕЧАНИЕ: Вам необходимо убедиться, что вы предоставляете LOCALE_ID Angular динамически в правильную локаль (импортируйте экспортированного провайдера в модуль приложения), если вы хотите, чтобы DatePipe использовал настройки браузера пользователя:

export class WindowRefService {
    public getWindow(): Window {
        return window;
    }
}

export function languageFactory(windowRef: WindowRefService): string {
  return windowRef.getWindow().navigator.language;
}

export const localeProvider = {
  provide: LOCALE_ID,
  deps: [WindowRefService],
  useFactory: languageFactory
};

См. Другие вопросы по LOCALE_ID: Angular4: языковой стандарт для пользователя

...