在Python中将数字从sqlite转换为日期

时间:2018-12-19 02:38:42

标签: python date dataframe

我刚刚从sqlite下载了csv,其中包含日期列。 df看起来像这样:

ROWID   text    is_from_me  handle_id   date
8       Esta muy    0       4           542735636047925696
9       Congratz    0       4           542735642840117952
10      En la       0       4           542735660785415872
11      Liked       1       4           542735693412165376

如何将date列变成可读的日期?

2 个答案:

答案 0 :(得分:3)

自2001年1月1日00:00:00以来,前9位数字似乎代表秒。

import time, datetime
t = time.gmtime(int("542735636047925696"[0:9])+978307200)
timestamp = time.mktime(t)
dt = datetime.datetime.fromtimestamp(timestamp)    
print(dt.strftime('%Y-%m-%d %H:%M:%S'))

# 2018-03-14 15:53:56

基于Parsing "date" field of iPhone SMS file from backup

答案 1 :(得分:1)

基于公认的答案,我调整了我的名字,以在此处进行其他注册。 :-)

from datetime import datetime

# 1970-01-01 00:00:00
unix_epoch = datetime(1970, 1, 1, 0, 0, 0)

# 2001-01-01 00:00:00   
mac_epoch = datetime(2001, 1, 1, 0, 0, 0)

# 1s = 10e9 ns
ns = 10**9

date = datetime.fromtimestamp(542735636047925696/ns) + (mac_epoch - unix_epoch)

print(date)

>>> 2018-03-14 15:53:56.047926