> Faqs > Cómo mostrar la fecha y hora con Javascript en un formato legible en español

Cómo mostrar la fecha y hora con Javascript en un formato legible en español

Hola! Tengo una pregunta sobre Javascript y el trabajo con fechas y horas.

Tengo una variable javascript con este contendio:

let x = Date.now();

Quiero mostrar la hora en un formato amigable, para personas que están en España. ¿cómo lo tendría que hacer?

Respuestas

Esto se puede hacer de muchas maneras en realidad. Pero te voy a dar una como bastante moderna, que usa toLocaleDateString(), y que permite definir la fecha en un formato adecuado para el idioma y región que indiques.

Entonces, para mostrar la hora en un formato amigable a partir del valor de Date.now(), puedes hacer algo así:

let x = Date.now(); // Obtiene el tiempo actual en milisegundos desde el 1 de enero de 1970
let date = new Date(x); // Crea un objeto Date usando el tiempo en milisegundos

// Opciones para formatear la fecha y hora
let options = {
  weekday: 'long', // Nombre completo del día de la semana
  year: 'numeric', // Año con cuatro dígitos
  month: 'long', // Nombre completo del mes
  day: 'numeric', // Día del mes con dígitos
  hour: '2-digit', // Hora con dos dígitos
  minute: '2-digit', // Minutos con dos dígitos
  second: '2-digit' // Segundos con dos dígitos
};

// Formatear la fecha y hora según las opciones especificadas
let formattedDate = date.toLocaleDateString('es-ES', options);
let formattedTime = date.toLocaleTimeString('es-ES', options);

console.log(`Fecha y hora actual: ${formattedDate}, ${formattedTime}`);

toLocaleTimeString requiere que le pases las opciones necesarias en cada caso. lo puedes personalzar.

Por ejemplo, el resultado podría ser algo como esto:

Fecha y hora actual: martes, 16 de mayo de 2024, 15:30:45
Victor
300 8 21 16
Muchas gracias. Solo tengo una duda... por qué haces esta línea let date = new Date(x); y no usas directamente x? Es que x es un timestamp, es decir, el número de milisegundos. No te vale para hacer funciones de fechas. Para formatear este timestamp necesitamos convertirlo a un objeto Date. Si intentamos usar directamente x, solo obtendremos el número de milisegundos, no una fecha legible.