我正在分析一个csv文件,该文件的日期列为dd/mm/yyyy格式。在将日期保存到数据库之前,需要将日期的格式转换为yyyy-mm-dd。所以我使用datepipe.transform方法如下
this.datePipe.transform(x[this.csvcolumns.colDOB], 'yyyy-MM-dd','de')
默认情况下,日期管道只接受mm/dd/yyyy的美国日期格式。因此,对于2000年2月18日这样的日期,日期管道会抛出如下错误。
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转换有点反模式。
这是我使用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