Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将数字从sqlite转换为日期_Python_Date_Dataframe - Fatal编程技术网

在Python中将数字从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

我刚刚从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

如何将
日期
列转换为可读日期?

似乎前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