如何将不以任何符号分隔、以几个(无用)零结尾的长日期字符串转换为 dd/mm/yyyy 格式?

how can I transform a long date string, not separated by any symbol, ending in several (useless ) zeroes into a dd/mm/yyyy format?

我从 API 收到这些类型的值:"2019092300000000" 作为要正确格式化的日期:进入 "dd/mm/yyyy" 格式。

// The below line of code fetches the above value from API.
this.releaseDate= this.selectedNote.dataUno["0"].releaseDate;   

我正在尝试应用 Angular 日期管道转换,但如果我将那个长字符串提供给管道转换,我会得到一个非常奇怪的日期:

   this.datePipe.transform(
        this.releaseDate, "dd/mm/yyyy"
      )

这输出:27/13/65952,这是错误的。

然后我尝试将值存储在变量中并应用 slice 方法删除零,如下所示:

 this.releaseDateSliced = this.releaseDate.slice(0, 8); // this removes the zeroes.

如果我在控制台中打印 this.fechaEmisionSliced,实际上我会得到这个 20190923,这似乎是使用 angular 日期管道进行转换的有效值。

但是在像这样应用日期管道之后:

 this.datePipe.transform(
        this.fechaEmisionSliced,
        "dd/mm/yyyy"
      )

我得到这个日期:01/36/1970 这显然是错误的。

我怎样才能正确格式化日期?

谢谢。

由于这不是 seconds/milliseconds 的正确时间戳,您应该将其解析为字符串并构建日期。

这是一种方法:

var dateStr = '2019092300000000';
var year = Number(dateStr.substring(0, 4))
var month = Number(dateStr.substring(4, 6)) - 1
var day = Number(dateStr.substring(6, 8)) + 1
var date = new Date(year, month, day);
console.log(date)