首页 > 解决方案 > 将日期时间格式转换为时间戳

问题描述

这是我的代码:

from dateutil import parser
import datetime

rTime = '2020-06-22T17:19:37.729000Z'
dateTimeRes = parser.isoparse(rTime)
naive = dateTimeRes.replace(tzinfo=None)
lastTime = (naive-datetime.datetime(1970,1,1)).total_seconds()
print ("Seconds : {}".format(lastTime))

输出 :

python test.py
Seconds : 1592846377.73

但预计'1592846377729000000'

标签: pythondatetime

解决方案


一旦你有一个datetime对象(这里naive),很容易将它转换为纳秒时间戳,因为该timestamp方法返回一个浮点数秒:

ts = int(naive.timestamp() * 1000000) * 1000

简单地说,您必须首先将微秒计算为整数,以防止浮点不准确给出错误的纳秒数:int(naive.timestamp() * 1000000000)是不准确的值1592839177729000192

顺便说一句,纳秒时间戳主要用于 numpy 或 Pandas。如果你使用它们,你可以直接使用numpy:

rTime = '2020-06-22T17:19:37.729000Z'
ts = np.int64(np.datetime64(rTime))

正如预期的那样1592846377729000


推荐阅读