以 UTC 日期时间为本地时间的 Angular (v4) DatePipe

Isa*_*rey 1 datetime iso8601 angular

与较新版本的 Angular 不同,Angular 4 DatePipe似乎不支持将时区作为参数传递。

我有一个后端服务返回一个没有时区的 ISO 8601 格式的日期时间字符串(例如,2018-12-04T19:01:50.062)——存储和返回为 UTC。

使用DatePipe,如何将日期时间显示为用户的本地时间?

Isa*_*rey 12

Angular 4DatePipe支持UTC 区域指示符后缀 ('Z'),因此如果您传递给管道的值是 UTC 日期时间,那么您的后端服务可以使用 'Z' 区域指示符返回您的日期时间,或者您可以附加Z它以用户本地时间显示日期时间。

例如,

<span class="date">{{ value + 'Z' | date:'short' }}</span>
Run Code Online (Sandbox Code Playgroud)

注意:如果您想DatePipe使用用户的浏览器设置,您需要确保将 Angular 的 LOCALE_ID 动态提供给正确的语言环境(将导出的提供程序导入您的应用程序模块):

<span class="date">{{ value + 'Z' | date:'short' }}</span>
Run Code Online (Sandbox Code Playgroud)

查看关于LOCALE_ID以下内容的其他问题:Angular4: Locale for a user