Avatar ·

Cómo convertir Unix timestamp a tiempo legible en JavaScript

¡Hola a todos! Soy nuevo en JavaScript y estoy trabajando en un proyecto donde obtengo datos de una API del clima. El servidor devuelve la hora como Unix timestamp (por ejemplo, 1717189200). Necesito mostrar esta hora al usuario en un formato comprensible, como "12:45" o "12:45:30". He probado varias cosas, pero nada funciona.\n\nAquí está mi código:\n\n```javascript\nlet timestamp = 1717189200;\nlet date = new Date(timestamp);\nconsole.log(date); // Muestra algo extraño: Thu Jan 01 1970 03:19:49...\n```\n\n¿Por qué obtengo el año 1970? Pensaba que Unix timestamp es la cantidad de segundos desde el 1 de enero de 1970. Pero new Date() espera milisegundos, ¿verdad? ¿Cómo convertir correctamente el timestamp a una hora normal? ¿Necesito considerar la zona horaria del usuario? Agradecería una explicación detallada con ejemplos de código. ¡Gracias!\n<<>>\n

Conversión correcta de Unix timestamp en JavaScript

\n\n

¡Vas por buen camino! El problema es que new Date() en JavaScript espera milisegundos, mientras que Unix timestamp está en segundos. Multiplica el timestamp por 1000 para convertirlo a milisegundos:

\n\n
let timestamp = 1717189200;\nlet date = new Date(timestamp * 1000);\nconsole.log(date); // Muestra la fecha correcta\n
\n\n

Para formatear la hora, puedes usar métodos como getHours(), getMinutes() y getSeconds(), o usar toLocaleTimeString() que respeta la zona horaria del usuario:

\n\n
let timestamp = 1717189200;\nlet date = new Date(timestamp * 1000);\nlet timeString = date.toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit', second: '2-digit' });\nconsole.log(timeString); // Ejemplo: "12:45:30"\n
\n\n

Si solo necesitas horas y minutos, omite second. ¡Espero que esto te ayude!