type read poi fecha example convertir check java excel datetime excel-formula

java - read - ¿Cómo convierto una marca de tiempo de época Unix en una fecha/hora legible para humanos en Excel?



read excel java (4)

El tiempo de la época se proporcionó en milisegundos ( 1523060201838 ). El usuario está buscando Convertir para la zona horaria de Nueva York ( GMT -04: 00 o DST -14400 ).

La celda A1 en Excel tiene el tiempo de tiempo de valor de 13 dígitos.

((A1/1000)-14400)/86400 + 25569

se convierte a 4/6/18 8:16 PM (después de formatear la celda como Fecha).

Tengo documentos de Excel que contienen marcas de tiempo de época Unix de una aplicación Java. Me gustaría ver a qué se traducen y representarlos como fechas legibles en humanos dentro de Excel.

Por ejemplo, la siguiente longitud: 1362161251894 debe evaluar algo legible como: 01 Mar 2013 11: 07: 31,894

Supongo que puedo crear una fórmula para esto, pero no estoy seguro de cómo. ¡Gracias!


Excel expresa días como valores completos y tiempos como valores fraccionarios. Por lo tanto, si el tiempo de época se proporcionó en milisegundos desde 1-1-1970 desde UNIX, entonces queremos dividir por el número de milisegundos en un año y agregar la representación de Excel de 1-1-1970 para proporcionar la hora UTC legible por humanos. Si su valor está en la celda A1, entonces Excel necesitaría:

=A1/86400/1000+DATEVALUE("1-1-1970")

Tenga en cuenta que puede soltar el / 1000 si su tiempo de época fue en segundos en vez de milisegundos. Para convertir a la hora local, donde ''t'' es su desplazamiento UTC local (recuerde usar un valor negativo si tiene un desplazamiento UTC negativo), puede agregar / quitar el desplazamiento UTC:

=A1/86400/1000+DATEVALUE("1-1-1970")+t/24

Tenga en cuenta que su compensación de UTC puede variar en función de si el horario de verano se observa en su ubicación, por lo que esta es una solución incompleta para mostrar las horas locales durante todo el año en una sola hoja de cálculo.


Sí, puedes crear una fórmula para hacer esto por ti. Java y Unix / Linux cuentan el número de milisegundos desde 1/1/1970, mientras que Microsoft Excel lo hace a partir del 1/1/1900 para Windows y 1/1/1904 para Mac OS X. Solo necesita hacer lo siguiente para convertir:

Para la hora GMT en Windows

=((x/1000)/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))

Para la hora GMT en Mac OS X

=((x/1000)/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1904"))

Para la hora local en Windows (reemplace t con su desplazamiento actual desde GMT)

=(((x/1000)-(t*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))

Para la hora local en Mac OS X (reemplace t con su desplazamiento actual desde GMT)

=(((x/1000)-(t*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1904"))

En su caso específico, parece que se encuentra en un tiempo de montaña (GMT offset de 7 ). Si pego el valor dado de 1362161251894 en una nueva hoja de cálculo de Excel en la celda A1 y luego pego la siguiente fórmula, obtengo un resultado de 41333.46356, que si le digo a Excel que formatee como una Fecha (presione ctrl + 1 en la celda) ) es: 2/28/13 11:07 AM

=(((A1/1000)-(7*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))