在Python中将数字从sqlite转换为日期
我刚刚从sqlite下载了一个包含日期的在Python中将数字从sqlite转换为日期,python,date,dataframe,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 542735660785415
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
如何将
日期
列转换为可读日期?似乎前9位数字可能代表自2001-01-01 00:00以来的秒数
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
基于基于接受的答案,我调整了我的答案,只是为了在这里注册另一种方式。:-)
这些数字是真实的例子吗?它们看起来太大了,不可能是时间戳。是的@Bemmu,它们是真实的例子。我从iMessage(iOS)下载了文本,这就是它附带的时间戳。你能找出它们代表什么吗?例如,它们是从epoch开始的毫秒吗?@user9074332这是我在这里发现的:我不知道如何用Python-tho来做……即使是从epoch开始的毫秒,它们也太大了。例如,542735636047925696/1000仍然在17200577年。这是巨大的帮助!!我可以用任何方法将输出转换为%Y-%m-%d%H:%m:%S吗?我将试着看看您是否会首先接受我的答案:-)编辑为包括转换为时间戳和从那里转换为日期时间非常感谢!你是最棒的!
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