我正在使用角度日期管道进行日期格式化。我想根据用户/客户端语言环境格式化日期。例如,美国英语(en-US)的“mm/dd/yyyy”和德语(de-de)的dd.mm.yyyy。Angular 有短、中、长等格式选项。它们与区域设置默认格式不匹配。如果我选择自定义日期格式,我没有语言环境分隔符。Intl DateTimeFormat 提供准确的格式化日期。有没有办法用角度日期管道来实现这一点?
问问题
6648 次
1 回答
12
**编辑**
我看不到最近的 Angular 文档提到registerLocaleData
,所以我认为现在可以忽略它,所以你可以跳过第一部分。我猜 Angular 会自动计算出您使用哪些语言环境,或者所有语言环境数据都捆绑到 Angular 中。
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
registerLocaleData(localeDe);
然后,您有两种选择。
- 您可以将
LOCALE_ID
变量设置为您喜欢的语言环境(de-DE
在您的情况下)。这可以通过使用or中的--i18nLocale
标志来完成,也可以通过在引导期间提供一个值来完成(参见文档)。如果您使用它,日期将根据您使用它的任何地方的区域设置规则进行格式化。ng build
ng serve
- 您可以将语言环境设置为 DatePipe 中的第三个参数。如果您使用这种方法,它只会影响日期管道的特定用法。参数由 分隔
:
,如果您想要某些先前参数的默认行为,可以将其设置为未定义。以下示例显示了使用 de-DE 日期格式而不使用任何时区偏移量的日期和时间:myDate | date : 'medium' : undefined : 'de-DE'
. 查看此 stackblitz以获取更多示例
于 2020-02-18T15:59:42.423 回答