我刚刚从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
列变成可读的日期?
答案 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
答案 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