0

我从 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"
      )

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

然后我尝试将值存储在一个变量中并应用 slice 方法来删​​除这样的零:

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

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

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

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

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

如何正确格式化日期?

谢谢。

4

1 回答 1

1

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

这是一种方法:

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)

于 2019-10-16T07:53:53.193 回答