在python中使用高精度时间戳

2024-10-17 06:30:09 发布

您现在位置:Python中文网/ 问答频道 /正文

嘿,我在python中使用datetime,我想知道解析这个时间戳的最佳方法是什么。

时间戳是ISO标准,下面是一个示例“2010-06-19T08:17:14.078685237Z”

到目前为止我已经用

time = datetime.datetime.strptime(timestamp.split(".")[0], "%Y-%m-%dT%H:%M:%S")
precisetime = time + datetime.timedelta(0,float("." + timestamp[:-1].split(".")[0]))

这类工作,但我觉得应该有一个更精简的方式(我对python很陌生,我相信我做这件事是像屁股一样的)。另外,我的时间戳中有纳秒,但datetime对象中只有微秒,是否有更好的模块可以使用?我需要能够在时间上做一些操作,比如减去时间并将它们放入调度程序中。

还有更好的办法吗?


Tags: 方法示例标准datetimetime方式时间iso
3条回答

你可以使用Numpy的datetime64:http://docs.scipy.org/doc/numpy-dev/reference/arrays.datetime.html

它支持纳秒和更高的精度。

>>> import numpy as np
>>> np.version.version
'1.7.1'
>>> np.datetime64("2010-06-19T08:17:14.078685237Z", dtype="datetime64[ns]")
numpy.datetime64('2010-06-19T08:17:14.078685237+0000')

你的方法没有本质上的愚蠢,但是你可以尝试pyiso8601dateutil

datetime仅精确到微秒。一、 e.10e-6

所以

14.078685237

将被截断为

14.078685

如果你做了以上的事。

最好在afloat中单独保持子秒,并执行一些浮点模运算来跟踪它。

我觉得datetime不这样做很荒谬。

对于那些说时钟不够精确的人来说。 这不是唯一的用例。当你从距离到时间来回转换时。 (乘以光速。) 1微秒是300米。 300米是3个足球场的长度。这完全是对准确性的废话。

相关问题 更多 >