Analyse du champ "date" du fichier SMS de l'iPhone à partir de la sauvegarde
Alors que ce n'est pas une question de programmation en soi, elle EST liée.
Donc, je suis à essayer de comprendre comment analyser les SMS DB qui est sauvegardé à partir de l'iPhone. Je suis à la recherche des "messages" de la table, plus précisément le champ "date". J'ai remarqué que les plus récentes sont les messages à l'aide d'un système de numérotation différent pour indiquer la date et l'heure. J'ai rétréci vers le bas de l'interrupteur à iMessage, comme j'ai un message envoyé à 1318470904, avec une réponse envoyée à 340164736. Je sais pour un fait que ces messages ont été envoyés à moins d'une heure d'intervalle, mais ils sont en indiquant > 30 ans de différence.
Ce que quelqu'un sait comment calculer avec précision la date à l'aide de ce nouveau système? Est-il l'aide d'une autre époque, ou est-il un fou de maths que je dois faire?
Edit: les messages les plus Récents sont également concernées. Textes (bulles vertes) sont enregistrés avec la date fixée normalement, et rien via iMessage (bulles bleues) sont enregistrées avec la date de la représentation.
source d'informationauteur David Young
Vous devez vous connecter pour publier un commentaire.
Depuis la sauvegarde est exporté au format de base de données SQLite, voici comment convertir le nombre à une date réelle dans SQLite:
Il est en secondes depuis le 1/1/2001 à la place des autres, qui sont basés sur Unix hors de 1/1/1970. Donc, pour le convertir à-dire un Excel le temps de votre formule =Cellule/(60*60*24) + "1/1/2001".
Je ne sais pas à propos de la date donné deux versions présentes, mais quand je l'ai fait aujourd'hui, j'ai remarqué que le
date
colonne n'était pas le standard unix moment, mais un nombre plus avec apparemment neuf zéros à la fin, comme444548608000000000
. C'est ce que j'ai fait pour obtenir la bonne date:Apple utilise Mac Temps Absolu (MacTime). C'est comptée à partir de 01-01-2001. L'autre date et heure que vous voyez est UnixTime. Cela commence par 01-01-1970.
Vous devez ajouter 31 ans à MacTime pour obtenir UnixTime. C'est un PHP-snippit:
La différence de temps est calculé à l'aide de ce site:
https://www.timeanddate.com/date/durationresult.html?d1=1&m1=1&y1=1970&d2=1&m2=1&y2=2001&h1=0&i1=0&s1=0&h2=0&i2=0&s2=0
Il y a peut être une autre réponse.
=Cell/(60*60*24) + "1/1/1970"
fonctionne avec ma version actuelle de l'iPhone/iOS => 4.3.3
Fomurla avec le temps des messages:
=Cellule/(60*60*24) + "1/1/2001 7:00"
Bohème♦ qui est juste, mais il y a une petite faute de frappe dans sa réponse:
utiliser %S (capitales) au lieu de %s, puisque le temps est représenté en secondes depuis 2001 et non en 1970!
Doc de https://www.sqlite.org/lang_datefunc.html
sélectionnez
datetime(date + strftime('%S', '2001-01-01 00:00:00'),
'unixepoch', 'localtime") en date,
*
à partir d'un message
Depuis la date de mac est calculé à partir de 2001 et non en 1970, nous devons ajouter quelques extra pour ce mac date.
978307200000 est l'équivalent de millisecondes jusqu'à 2001-01-01
Aussi en multipliant par 1000 est requis pour convertir les milli-secondes.