2 votos

ITérminos 2 Historial Marca de tiempo a legible por humanos

Puedo ver todos los comandos ingresados en iTerm haciendo lo siguiente:

$ sqlite3 ~/Library/Application\ Support/iTerm2/ShellHistory.sqlite

sqlite> select * from ZCOMMANDHISTORYCOMMANDUSE;

La salida se ve así:

54171|1|1||22159|5120|642127758.695336|cat wolf_password|/Users/franks|6978AA30-BD92-4949-9C28-6B77F525DE51

La séptima columna parece ser una marca de tiempo en milisegundos pero no es de época, que sería: GMT: martes, 8 de mayo de 1990 12:49:18.695 AM, lo cual es incorrecto, este comando se ejecutó en los últimos años.

El esquema de la tabla muestra:

sqlite> .schema ZCOMMANDHISTORYCOMMANDUSE
CREATE TABLE ZCOMMANDHISTORYCOMMANDUSE ( Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZCODE INTEGER, ZENTRY INTEGER, Z_FOK_ENTRY INTEGER, ZTIME FLOAT, ZCOMMAND VARCHAR, ZDIRECTORY VARCHAR, ZMARKGUID VARCHAR );
CREATE INDEX ZCOMMANDHISTORYCOMMANDUSE_ZENTRY_INDEX ON ZCOMMANDHISTORYCOMMANDUSE (ZENTRY);

Es ZTIME FLOAT

Teniendo en cuenta lo anterior, ¿qué fecha y hora legibles por humanos representa 642127758.695336?

0voto

fortran Puntos 26495

Su comando se ejecutó el 8 de mayo de 2021 a las 00:49:18 UTC.

Si echamos un vistazo al código fuente de iTerm2 para el almacenamiento de historial, notamos que now se define de la siguiente manera:

- (NSTimeInterval)now {
    return [NSDate timeIntervalSinceReferenceDate];
}    

Si luego echamos un vistazo a la documentación de NSDate para timeIntervalSinceReferenceDate, notamos que Apple utiliza un época diferente a UNIX. Cualquier tiempo basado en esta propiedad calculará los segundos desde el 1 de enero de 2000 a las 00:00 UTC.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X