【发布时间】:2020-05-14 09:16:57
【问题描述】:
所以我有一个角度应用程序(角度 8),将被英国、毛里求斯和南非(可能更多)使用。
如何根据用户的区域设置日期?
我会使用自定义管道吗?或者将其设置为 app.module 中的某种提供程序?
谢谢。
【问题讨论】:
标签: angular typescript date angular-date-format
所以我有一个角度应用程序(角度 8),将被英国、毛里求斯和南非(可能更多)使用。
如何根据用户的区域设置日期?
我会使用自定义管道吗?或者将其设置为 app.module 中的某种提供程序?
谢谢。
【问题讨论】:
标签: angular typescript date angular-date-format
在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
) { }
并将其作为参数发送到自定义管道或其他相关方法。
让我知道这是否对你有用
【讨论】:
通常我使用moment 库,并会创建一个管道以所需语言格式化日期,例如
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");
}
}
例如
{{item.date | customdate : 'en-us'}} = 三月
{{item.date | customdate : 'de'}} = März
{{item.date | customdate : 'es'}} = Marzo
【讨论】: