Unix time значения представляют собой число секунд с начала эпохи и не будут иметь десятичной дроби, аналогичной вашей 1556214336.316
Если я возьму 1556214336
(без.316
) и поместите его в конвертер Я получаю вывод 04/25/2019 @ 5:45pm (UTC)
, который не 1970 - кажется, точное время (я не проверял независимо)
Похоже, что ваш 1556214336.316
- это секунд. миллисекунд со времени эпохи.
Javascript использует ту же эпоху, но это число миллисекунды начиная с эпохи, а не секунды, поэтому, если я прав насчет времени, которое вы получаете, вы сможете просто удалить десятичное место и использовать полученную числовую строку.Действительно,
var d = new Date(1556214336316);
console.log('Date is: ' + d.toUTCString());
производит
Date is: Thu, 25 Apr 2019 17:45:36 GMT
, что точно соответствует времени преобразователя "5:45 pm"
var d = new Date(1556214336316);
console.log('Date is: ' + d.toUTCString());
Предполагая, что ваше значение 1556214336.316
является строкой, возвращаемой из веб-API, вы можете удалить десятичную дробь, и ваше преобразование может быть выполнено следующим образом (обратите внимание, что вы этого не делаетесоздавать новые Date
объекты):
convertDateToTimerFormat = (time) => {
const d = new Date( Number(time.replace(/\./g, '')) );
return `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`;
};
console.log( 'time: ' + convertDateToTimerFormat('1556214336.316') );
В зависимости от вашего использования, вы можете использовать getUTCHours()
и т. Д.