1

最近 Angular DatePipe 显示 InvalidPipeArgument 错误,但字符串日期接缝是正确的。任何人都可以看到一些错误吗?这是我使用TypescriptAngular 6的代码

let datePipe: DatePipe = new DatePipe("es-ES");
let dia_sele: string = "";
                try {
                  let fecha_formateada = this.datePipe.transform('23-01-2019', 'dd-MM-yyyy','es-ES');
                  dia_sele = fecha_formateada;
                } catch (e) {
                  dia_sele = "";
                  console.log( "->err:" + e);
                }

这是 Chrome Windows 控制台中显示的错误:

core.js:14597 ERROR Error: Uncaught (in promise): Error: InvalidPipeArgument: 'Unable to convert "23-01-2019" into a date' for pipe 'DatePipe'
Error: InvalidPipeArgument: 'Unable to convert "23-01-2019" into a date' for pipe 'DatePipe'
    at invalidPipeArgumentError (common.js:4013)
    at DatePipe.transform
4

2 回答 2

1

不确定您要在这里实现什么。因为您的输入和输出日期具有相同的格式。

但是,如果您需要其他格式的日期,该解决方案将有效

为什么它不起作用?

在 chrome'23-01-2019'中不是有效的日期字符串。甚至

new Date('23-01-2019')

Invalid Date在 chrome 中给出消息(未在其他浏览器中检查)。您可以在控制台中尝试。

解决方案

因此,或者您可以使用其他分隔符格式化日期,/然后DatePipe在该日期执行转换。更多关于格式化在这里

例子 :

let myDate = "23-01-2019".replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3")
let newDate = this.dp.transform(myDate, 'yyyy-MM-dd', 'es-ES');

演示

于 2019-01-07T15:23:14.540 回答
0
  1. 您可以将此代码用于 datetime-local 类型
this.myDate = this.datePipe.transform(this.myDate, 'yyyy-MM-ddThh:mm:ss');
console.log(this.myDate)
this.form.patchValue({date_of_spent:this.myDate});
  1. 试试这个日期类型的代码和平
this.myDate = this.datePipe.transform(this.myDate, 'yyyy-MM-dd');
console.log(this.myDate)
this.form.patchValue({date_of_spent:this.myDate});`enter code here`
于 2022-02-26T01:35:12.483 回答