Convertir numero en fecha y hora javascript

publicado por: Anonymous

Tengo el siguiente numero “43638.65650864583” (obtenido de un timestamp de google sheet) y quiero convertirlo en formato con un javascript “dd/mm/yyyy hh:mm:ss”

Probe:

var date = new Date(43638.65650864583);
console.log(date.toLocaleString());

Pero no me trae la fecha correcta.

solución

En JavaScript las fechas se construyen usando milisegundos que han transcurrido desde el 1 de enero de 1970 (lo que se conoce como Tiempo Unix, o Unix Epoch).

El formulario, parece que te está dando el valor en número de días que han pasado desde el 1 de enero de 1900. Esto es común en las hojas de cálculo (Google Sheets y Microsoft Excel por ejemplo). Lo que necesitas hacer es:

  1. Restar el número de días entre el 1 de enero de 1900 y 1 de enero de 1970 (en Microsoft Excel además tendrás que añadir 1 por un bug que cuenta 1900 como año bisiesto cuando no es así).
  2. Convertir a milisegundos.

La fórmula del primer paso es esta: (numeroDeDias - (25567)) * 86400 * 1000) para Google Sheets. Y (numeroDeDias - (25567 + 1)) * 86400 * 1000) para Microsoft Excel.

Prueba con este código:

_x000D_

_x000D_

function numeroAFecha(numeroDeDias, esExcel = false) {_x000D_
  var diasDesde1900 = esExcel ? 25567 + 1 : 25567;_x000D_
_x000D_
  // 86400 es el número de segundos en un día, luego multiplicamos por 1000 para obtener milisegundos._x000D_
  return new Date((numeroDeDias - diasDesde1900) * 86400 * 1000);_x000D_
}_x000D_
_x000D_
var fecha = numeroAFecha(43638.65650864583, true);_x000D_
console.log(fecha);

_x000D_

_x000D_

_x000D_

Ten en cuenta que el resultado dependerá de la hora local del ordenador que ejecute el código.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *