angular - DatePipe.transform 显示 'dd-MM-yyyy' 的 InvalidPipeArgument

标签 angular typescript date-pipe

最近 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

最佳答案

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

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

为什么不起作用?

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

new Date('23-01-2019')

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

解决方案:

因此,您也可以使用其他分隔符(例如 /)格式化日期,然后对该日期执行 DatePipe 转换。有关格式化的更多信息 here

示例:

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');

DEMO

关于angular - DatePipe.transform 显示 'dd-MM-yyyy' 的 InvalidPipeArgument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54076288/

相关文章:

android - 找不到模块 "./app.module.ngfactory"

javascript - 单击日期后如何关闭日历弹出窗口

TypeScript 推荐的带有模块的项目结构

javascript - 在 Typescript Angular 中设置时间格式

Angular Material 输入 float 标签默认颜色更改

javascript - 在 Angular 2+ 应用程序中从 Twitter 获取用户访问 token

javascript - 错误 TS7052 : Element implicitly has an 'any' type because type 'AbstractControl' has no index signature. 你的意思是调用 'get' 吗?

typescript - 如何在 typescript 中将模块提升为全局?

javascript - Angular:如何将时间从 00:00:01 转换为 8 分 49 秒格式?