Ich arbeite daran, mein iMessages-Sicherungsskript zu verbessern . /Users/Kyro/Library/Messages/chat.db
hat eine Tabelle message
mit allen Nachrichten und einigen Daten.
Irgendeine Idee, was das Datumsformat ist? Ich habe zuerst an einen Zeitstempel gedacht (ich habe zum Beispiel 408978598
), aber date -r 408978598
ein Datum im Jahr 1982 zurückgegeben.
Ich habe festgestellt, dass ich ab High Sierra eine andere Datumstransformation verwenden musste. Die 8 zusätzlichen Nullen im Datumsfeld im Vergleich zum date_read-Feld waren der Hinweis:
datetime(message.date/1000000000 + strftime("%s", "2001-01-01") ,"unixepoch","localtime")
Um die hilfreiche Antwort von @Matthieu zu ergänzen, können Sie sie wie folgt in SQLLite konvertieren:
datetime(date + strftime('%s','2001-01-01'), 'unixepoch')
Zum Beispiel:
select
is_from_me,
datetime(date + strftime('%s','2001-01-01'), 'unixepoch') as date_utc,
text
from message;
gut mit coreUtils date :
Ich habe gefunden, wonach ich gesucht habe:
$gdate -ud "2001-01-01 + 408978598 seconds"
Tue Dec 17 13:09:58 UTC 2013
Es ist ein Zeitstempel mit dem Basisdatum 1. Januar 2001.
-u
Option weg und fügen Sie den UTC-Zeitzonenindikator zur Datumszeichenfolge hinzu:$ gdate -d "2001-01-01Z + 408978598 seconds"
In dem Skript, auf das Sie sich beziehen, können Sie Zeitstempel wie folgt erreichen: datetime(date + strftime('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') als Datum aus der Nachricht - um in Ortszeit einzusteigen, wenn es das ist, wonach Sie suchen.
Mahmoud Al-Qudsi
Anton Max
Benutzer44764
SkrewEverything
Chris
Sagar