为什么角度日期管道不支持区域设置语言默认格式,如Intl.DateTimeFormat



我使用角度日期管道进行日期格式化。我想根据用户/客户端区域设置设置日期格式。例如,'mm/dd/yyyy'表示英语US(en-US(,dd.mm.yyyy表示德语(de de(。Angular有短、中、长格式选项。它们与区域设置默认格式不匹配。如果我选择自定义日期格式,我没有区域设置分隔符。Intl DateTimeFormat提供精确的格式化日期。有什么方法可以通过有角度的日期管道实现这一点吗?

**编辑**

我看不出最近的Angular文档提到registerLocaleData,所以我认为现在可以忽略它,所以你可以跳过第一部分。我猜Angular会自动计算出您使用的区域设置,或者所有区域设置数据都绑定到Angular中。


首先要确保的是您已经加载了区域设置数据。您可以在文档中所述的"app.module.ts"中执行此操作:
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
registerLocaleData(localeDe);

那么,您有两个备选方案。

  1. 您可以将LOCALE_ID变量设置为您喜欢的区域设置(在您的情况下为de-DE(。这可以通过在ng buildng serve中使用--i18nLocale标志来完成,也可以通过在引导过程中提供值来完成(请参阅文档(。如果您使用此选项,则无论您在哪里使用日期,都将根据该区域设置的规则对日期进行格式化
  2. 您可以将区域设置为DatePipe中的第三个参数。如果使用这种方法,它只会影响日期管道的特定使用。参数由:分隔,如果您想要某个先前参数的默认行为,可以将其设置为未定义。以下示例显示了使用de de日期格式而不使用任何时区偏移的日期和时间:myDate | date : 'medium' : undefined : 'de-DE'。查看此stackblitz了解更多示例

最新更新