Marca de tiempo de Unix a fecha y hora reales<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Extraigo datos de una base de datos y parte de esto es una "hora de inicio" para un proceso. El principal problema con esto es que está en formato UNIX, por lo tanto, devuelve un número de 10 dígitos, sé que la fórmula para convertir esto a la fecha y hora reales es la siguiente
(tomado de Excel)
=CELULA/(60*60*24)+"1/1/1970"
por lo tanto, cambiar una columna en JMP debería ser sencillo, pero parece que no puedo hacerlo. El (60*60*24) es fácil, pero ¿en qué formato tengo que configurar el +"1/1/1970" para que esto funcione?
He adjuntado una tabla de datos que contiene algunas fechas de los últimos 6 años como ejemplo. Mi sensación es que esto podría haberse preguntado antes, pero no puedo ver nada que se relacione con eso.
Saludos
David
Re: Marca de tiempo de Unix a fecha y hora realesCreo que debería ser suficiente si elimina el tiempo cero de Unix de la fecha y hora de JMP, ya que ambos están en segundos. Esperemos que no tengas que tocar las zonas horarias ( El problema con el tiempo y las zonas horarias - Computerphile (youtube.com) )
Names Default To Here(1);
unix_zero = Date MDY(1,1,1970);
date_now = Today();
unix_time = date_now - unix_zero;
// In Hours() might be helpful if you need timezone conversion
// just to verify that time is correct I'm using Unix Timestamp converter REST API from https://unixtime.co.za/
aa = Associative Array();
aa["timestamp"] = unix_time;
request = New HTTP Request(
URL("https://showcase.api.linx.twenty57.net/UnixTime/fromunix"),
Method("GET"),
Query String(aa)
);
data = request << send;
Show(As Date(date_now));
show(data);
Re: Marca de tiempo de Unix a fecha y hora realesMi pregunta es todo lo contrario, ¿cómo convierto el tiempo real a las marcas de tiempo de Unix?
Re: Marca de tiempo de Unix a fecha y hora realesSí.... sabía que me estaba perdiendo algo jajaja. ¡Gracias!
Re: Marca de tiempo de Unix a fecha y hora realesHa hecho clic en "Fecha" para la selección del formato a elegir. Seleccione "Hora" y le dará todos los formatos de Fecha/HoraRe: Marca de tiempo de Unix a fecha y hora realesHola Bill,
Sé que esta publicación es de hace mucho tiempo, pero estoy tratando de hacer lo mismo y fallando. Tengo la fórmula y toda esa entrada en la nueva columna, pero no puedo encontrar la opción para seleccionar m/d/yh:m:s para la convención de fechas. Solo tengo las opciones para seleccionar las muchas variantes de m/d/y. ¿Hay algo que me falta para incluir la hora en la salida de fecha? Gracias.


@Bill_Worley escribió:
Otro complemento: hablé con Jeff fuera de línea e hizo un muy buen punto.No use la cadena de caracteres "MDYHMS" si quiere hacer cálculos con sus marcas de tiempo.Use Información de columna para dar formato a sus nuevos tiempos como datos continuos.

Re: Marca de tiempo de Unix a fecha y hora realesJeff/Bill,
Noté que también fue en segundos, pero usé el formato disponible para convertirlo en el tiempo 'adecuado'.
Gracias de nuevo.
David
Re: Marca de tiempo de Unix a fecha y hora realesjeff,
Había notado que el 4 de enero de 1904 aparecía varias veces y pensé que era un error de formato o de cálculo que había cometido, esto solo aumentó mi confusión de por qué no podía hacer funcionar esta conversión de fecha.
Gracias por tu ayuda
David
Re: Marca de tiempo de Unix a fecha y hora realesOtro complemento: hablé con Jeff fuera de línea e hizo un muy buen punto.No use la cadena de caracteres "MDYHMS" si quiere hacer cálculos con sus marcas de tiempo.Use Información de columna para dar formato a sus nuevos tiempos como datos continuos.

Re: Marca de tiempo de Unix a fecha y hora realesSolo un complemento a la publicación de Jeff.Cuando usé su fórmula, recuperé la cantidad de segundos.Agregué el formato MDYHMS a la fórmula para obtener la fecha y la hora.

Factura
Re: Marca de tiempo de Unix a fecha y hora realesLa fecha UNIX es el número de segundos desde la medianoche del 1 de enero de 1970.
JMP almacena las fechas como el número de segundos desde la medianoche del 1 de enero de 1904.
Entonces, solo necesitamos agregar el valor de fecha JMP para el 1 de enero de 1970 al valor de fecha Unix. Puede usar la función Date DMY() para hacer esto:

-Jeff
Re: Marca de tiempo de Unix a fecha y hora realesintente 1 de enero de 1970 sin comillas.
formato (1 de enero de 1970+1445432452, "mdy")
"21/10/2015"
(Eso es hoy, para futuras referencias.Obtuve Convertidor de época - Convertidor de marca de tiempo de Unix para darme el tiempo de Unix para hoy: 1445432452 )
agregar 1 de enero de 1970 funciona porque el tiempo de Unix para el 1 de enero de 1970 es cero.Y porque tanto JMP como Unix cuentan en segundos.
Tenga cuidado, he visto algunas discusiones sobre cuándo comenzó realmente la época de Unix: Tiempo Unix - Wikipedia, la enciclopedia libre dice
The first edition Unix Programmer's Manual dated 3 November 1971 defines the Unix time as "the time since 00:00:00, 1 January 1971, measured in sixtieths of a second".[5]The User Manual also commented that "the chronologically-minded user will note that 232 sixtieths of a second is only about 2.5 years". Because of this limited range, the epoch was redefined more than once,[citation needed] before the rate was changed to 1 Hz and the epoch was set to its present value of 1 January 1970 00:00:00 UTC. This yielded a range of about 136 years, though with more than half the range in the past (see discussion of signedness above).