将Long Int时间戳转换为日期/时间

时间:2012-04-18 23:36:14

标签: python sqlite datetime time timestamp

我使用连接chrome'History'文件的sqlite3进行分析。但是有last_visit_time的数据,这是时间戳,但我不知道如何将其更改为实时。 我这样测试:

2012-04-18 23:22:11.084300 (utctime)

2012-04-19 01:22:11.084300 (myPC time)

12,979,264,931,952,304 (the time stamp in the data)

我打印了utctime并几乎同时点击了一个网站。所以我得到了如上所述的统计数据。 12,979,264,931,952,304是long int,因此无法正常转换。

如何将时间戳转换为日期?

1 个答案:

答案 0 :(得分:1)

它存储的时间戳是自1601年1月1日午夜UTC以来的微秒数。要将其转换为当前时间,您可以在{{3}的帮助下将您拥有的微秒数添加到纪元日期。 },像这样:

>>> import datetime
>>> epoch_start = datetime.datetime(1601, 1, 1)
>>> delta = datetime.timedelta(microseconds=12979264931952304)
>>> epoch_start + delta
datetime.datetime(2012, 4, 18, 23, 22, 11, 952304)

要转换为您当地的时区,您可以使用this answer(请注意,我目前是UTC - 4,而您似乎是UTC + 2):

>>> from dateutil import tz
>>> from_zone = tz.tzutc()
>>> to_zone = tz.tzlocal()
>>> utc_time = (epoch_start + delta).replace(tzinfo=from_zone)
>>> utc_time.astimezone(to_zone)
datetime.datetime(2012, 4, 18, 19, 22, 11, 952304, tzinfo=tzlocal())