как я могу преобразовать длинную строку даты, не разделенную никаким символом, заканчивающуюся несколькими (бесполезными) нулями, в формат дд / мм / гггг? - PullRequest
0 голосов
/ 16 октября 2019

Я получаю такие значения из API: "2019092300000000" как дату, которую необходимо правильно отформатировать: в формате "дд / мм / гггг".

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

Я пытаюсь применить угловое преобразование даты, но получаю очень странную дату, если я передаю преобразование трубы с помощью этой длинной строки:

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

это выводит это: 27/13/65952, что неверно.

Затем я попытался сохранить значение в переменной и применить метод среза для удаления нулей следующим образом:

 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, что явно неверно.

Как мне добиться правильного форматирования даты?

Спасибо.

1 Ответ

1 голос
/ 16 октября 2019

Поскольку это неправильная временная метка в секундах / миллисекундах, вы должны проанализировать ее как строку и просто построить дату.

Вот один из способов сделать это:

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)
...