Estoy tratando de convertir la marca de tiempo de Unix a la fecha local en un proyecto de reacción. A continuación se muestra la función que estoy usando:
function convertDate(unixDate) { const d = new Date(unixDate * 1000); const day = d.toLocaleString(d.getDate()) return(day); }La fecha que estoy recibiendo no es exacta. Por ejemplo, si ejecutamos convertDate (1657745369979.82), deberíamos obtener la fecha '07/13/2022 8:49:29 PM'. Sin embargo, la fecha que en realidad obtengo es '10/11/54501, 8:59:39 a. m.'
¿Por qué estás multiplicando por 1000? Esto funciona bien
new Date(1657745369979.82).toLocaleString() => '14/07/2022, 02:19:29'que es lo mismo que
Convert epoch to human-readable date and vice versa 1657745369979.82 Timestamp to Human date [batch convert] Supports Unix timestamps in seconds, milliseconds, microseconds and nanoseconds. Assuming that this timestamp is in milliseconds: GMT: Wednesday, July 13, 2022 8:49:29.979 PM Your time zone: Thursday, July 14, 2022 2:19:29.979 AM GMT+05:30 Relative: A day agode https://www.epochconverter.com/
Si hay más de lo que desea, este antiguo hilo también debería ayudara convertir una marca de tiempo de Unix en tiempo en JavaScript
Parece que no necesita multiplicar la marca de tiempo por 1000.
Las marcas de tiempo de Unix suelen tener esta longitud: 1657831769, que debería multiplicarse por 1000 ( https://www.epochconverter.com/ es útil para probar conversiones).
const unixDate = 1657745369979.82; const d = new Date(unixDate); console.log(d.toISOString());Salida: 2022-07-13T20:49:29.979Z