Недопустимая дата при использовании временной метки unix с буквами в ней в JavaScript

#javascript #date #unix-timestamp

#javascript #Дата #unix-временная метка

Вопрос:

Это временная метка, которая у меня есть: 5fb6995

Когда я делаю new Date('5fb6995') , возвращается недопустимая дата. Но когда я пытаюсь преобразовать ее онлайн в онлайн-конвертере, все работает. Почему это не работает и как я могу заставить это работать?

Ответ №1:

Вы можете преобразовать свою шестнадцатеричную временную метку в десятичную с помощью parseInt и radix 16 .

Однако ваша временная метка указана в часах или что-то в этом роде

 const ts = parseInt("5fb6995",16); 
console.log(new Date(ts)); // 1970
console.log(new Date(ts*1000)); // still 1973 (Unix TSs are normally in seconds since Epoch - 1970/01/01)

// perhaps you want hh-mm-ss from that UNIX timestamp:

console.log(
  new Date(ts * 1000).toISOString().slice(11,-5)
) 

Ответ №2:

ваша строка 5fb6995 находится в шестнадцатеричной базе, вам нужно сначала преобразовать ее в десятичную:

 new Date(parseInt("5fb6995", 16));