从备份中解析iPhone SMS文件的"日期"字段

Dav*_*ung 12 iphone backup datetime

虽然这本身不是一个编程问题,但它是相关的.

所以我想弄清楚如何解析从iPhone备份的SMS数据库.我正在查看"消息"表,特别是"日期"字段.我注意到最近的消息使用不同的编号系统来指示日期/时间.我已将其缩小到切换到iMessage,因为我在1318470904发送了一条消息,并在340164736发送了回复.我知道这些消息发送时间不到一小时,但他们指示> 30年的差异.

有谁知道如何使用这个较新的系统准确计算日期?它是使用不同的时代还是我需要做一些疯狂的数学?

编辑:最近的消息也会受到影响.文本(绿色气泡)与正常设置的日期一起存储,通过iMe​​ssage(蓝色气泡)的任何内容都与不同的日期表示一起存储.

Boh*_*ian 13

由于备份导出为SQLite数据库格式,以下是如何将数字转换为SQLite中的实际日期:

select
    datetime(date + strftime('%s', '2001-01-01 00:00:00'),
       'unixepoch', 'localtime') as date,
    *
from message
Run Code Online (Sandbox Code Playgroud)


小智 7

它是自1/1/2001以来的几秒钟,而不是其他基于Unix的1970年1月1日.因此,要将其转换为Excel时间,您的公式将为= Cell /(60*60*24)+"1/1/2001".


Rya*_*Val 6

我不知道在给出两个版本的情况下获得正确的日期,但是当我今天这样做时,我注意到该date列不是标准的unix时间,而是一个更长的数字,最后看似九个零,就像444548608000000000.这是我为了得到正确的日期所做的:

select
    datetime(substr(date, 1, 9) + 978307200, 'unixepoch', 'localtime') as f_date,
    text
from message
Run Code Online (Sandbox Code Playgroud)