1

所以我有一个角度应用程序(角度 8)将被英国、毛里求斯和南非(可能更多)使用。

如何根据用户的语言环境设置日期?

我会使用自定义管道吗?或者将其设置为 app.module 中的某种提供程序?

谢谢。

4

2 回答 2

1

app.module我这样设置MAT_DATE_LOCALE值:

providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: RequestInterceptor,
      multi: true,
    },
    { provide: MAT_DATE_LOCALE, useValue: 'ro-RO' },  //YOUR DESIRED LOCALE
    DatePipe
  ],

mat-table此外,在我使用管道等其他控件中:

<td mat-cell *matCellDef="let element" class="alignLeft"> {{ element.Date | date: 'dd/MM/yyyy HH:mm' }}

当内容是动态的时,您可以尝试使用它:

import { LOCALE_ID, Inject } from '@angular/core';

...

constructor(
  @Inject(LOCALE_ID) public locale: string
) { }

并将其作为参数发送到自定义管道或其他相关方法。

让我知道这是否对你有用

于 2020-05-14T10:01:13.243 回答
0

通常我使用时刻库​​,并会创建一个管道以所需语言格式化日期,例如

import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';

@Pipe({
    name: 'customdate'
})
export class CustomDatePipe implements PipeTransform {

    constructor() { }

    transform(value: any, lng:string) {
            return moment(value).lang(lng).format("MMM");
        
    }
}

所以例如

{{项目日期 | customdate : 'en-us'}} =三月

{{项目日期 | customdate : 'de'}} = März

{{项目日期 | customdate : 'es'}} = Marzo

于 2020-05-14T09:57:25.470 回答