Estoy trabajando para mejorar mi secuencia de comandos de copia de seguridad de iMessages . /Users/Kyro/Library/Messages/chat.db
tiene una tabla message
con todos los mensajes y algunas fechas.
¿Alguna idea de cuál es el formato de fecha? Primero pensé en una marca de tiempo (tengo, por ejemplo 408978598
), pero date -r 408978598
devolví una fecha en 1982.
Descubrí que a partir de High Sierra, necesitaba usar una transformación de fecha diferente. Los 8 0 adicionales en el campo de fecha frente al campo date_read fueron la pista:
datetime(message.date/1000000000 + strftime("%s", "2001-01-01") ,"unixepoch","localtime")
Para agregar a la respuesta útil de @Matthieu, aquí se explica cómo convertirlo dentro de SQLLite:
datetime(date + strftime('%s','2001-01-01'), 'unixepoch')
Por ejemplo:
select
is_from_me,
datetime(date + strftime('%s','2001-01-01'), 'unixepoch') as date_utc,
text
from message;
bien usando la fecha de coreUtils :
Encontré lo que buscaba:
$gdate -ud "2001-01-01 + 408978598 seconds"
Tue Dec 17 13:09:58 UTC 2013
Es una marca de tiempo con fecha base 1 de enero de 2001.
-u
opción y agregue el indicador de zona horaria UTC a la cadena de fecha:$ gdate -d "2001-01-01Z + 408978598 seconds"
En el script al que se refiere, puede lograr una marca de tiempo de la siguiente manera: datetime(date + strftime('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') como fecha desde el mensaje: para ingresar en la hora local si eso es lo que está buscando.
Mahmoud Al-Qudsi
antonio max
usuario44764
SkrewTodo
cris
sagar