0

我正在使用 angular2 默认 DatePipe 根据浏览器区域设置/语言格式化日期。

在我的情况下,它总是根据英语格式化日期。

app.module.ts    
{
       provide: LOCALE_ID, useValue: "hi"
}

在我的自定义管道中,我使用 DI 在构造函数中创建了 DatePipe 对象。

myDatePipe.ts
public constructor(private translate: TranslateService,private datePipe: DatePipe, , @Inject(LOCALE_ID) locale: string)) { 
    console.log(locale); // This log string 'hi'
}

public transform(value: string, format: string) {
    // 'shortTime' format always return value in '5:15 am' format.
    // 'longDate' format always return value in '28 दिसंबर 2017' format.
    return this.datePipe.transform(value, format); 
}

我通过记录 Locale_ID 记录了当前应用的语言,它被记录为“hi”。

4

1 回答 1

1

您最好的选择是创建您自己的 shortDate 管道并使用 NGX 翻译服务,将浏览器语言拉入并使用它来转换您的日期。这是我正在使用的短日期管道的示例

这是 Angular 6,所以我也在使用 @angular/common 中提供的新 formatDate 功能,

import { Pipe, PipeTransform} from '@angular/core';
import { formatDate  } from '@angular/common';
import { TranslateService } from '@ngx-translate/core';

@Pipe({
  name: 'shortDate'
})
export class ShortDatePipe implements PipeTransform {
    constructor(private translateService: TranslateService) { }

    transform(value: string): string {
        var language: string = this.translateService.getBrowserCultureLang();
        console.log(language);
        return (value == "" || value == null) ? "" : formatDate(value, 'shortDate', language);
    }

}

如果你不在 angular6 上,你需要导入一个 datePipe,在你的构造函数中放置一个 datepipe 并使用它的变换

像这样的东西(未经证实或测试,就在我的脑海中)

import { DatePipe } from '@angular/common';
...
    constructor(private translateService: TranslateService, 
                private datePipe: DatePipe ) { }

...
return this.datePipe.transform( value, 'shortDate',language);
于 2018-07-30T14:15:01.583 回答