.ts 文件中 datepipe.transform 方法的 dd/mm/yyyy 格式

dd/mm/yyyy format for datepipe.transform method in .ts file

我正在解析一个 csv 文件,该文件的日期列为 dd/mm/yyyy 格式。在将日期保存到数据库之前,需要将日期格式转换为 yyyy-mm-dd。所以我为此使用 datepipe.transform 方法如下

this.datePipe.transform(x[this.csvcolumns.colDOB], 'yyyy-MM-dd','de')

默认情况下,datepipe 只接受美国日期格式,即 mm/dd/yyyy。所以对于像 18/02/2000 这样的日期,日期管道会抛出如下错误。

InvalidPipeArgument: 'Unable to convert "13/02/2012" into a date' for pipe 'DatePipe'

我在app.module.ts中添加了以下配置。

import { registerLocaleData } from '@angular/common'; 
import localeDe from '@angular/common/locales/de';
registerLocaleData(localeDe);

那么在 DatePipe.transform 中添加 LocaleId 的最佳方法是什么

(method) DatePipe.transform(value: any, format?: string, timezone?: string, locale?: string): string

我需要为此在构造函数中进行任何更改吗?我的构造函数如下所示

 providers: [DatePipe] })
 
 export class BulkuploadPage implements OnInit {
    constructor(private datePipe: DatePipe) { } 
  ngOnInit() {}

就个人而言,我认为在自定义 datePipe 之外使用 datePipe 转换有点 anti-pattern。

这是我使用 moment 的方式:

myFormattedDate = moment('13/02/2000', 'DD/MM/YYYY').format('YYYY-MM-DD');
//where..
myFormattedDate = moment(yourDate, currentFormat).format(desiredFormat);

然后你就可以使用

<p>{{ someDate | date: 'YYYY-MM-dd' }}</p>

请注意,您可能不需要使用管道的格式部分,具体取决于您是否更改了默认值。

工作示例: https://stackblitz.com/edit/angular-ps68n4?file=src%2Fapp%2Fapp.component.ts