带有 time() 的 Python 时间戳

Posted

技术标签:

【中文标题】带有 time() 的 Python 时间戳【英文标题】:Python timestamps with time() 【发布时间】:2015-07-08 12:58:46 【问题描述】:

我在数据库中有几个时间戳,我想将它们从最新到最旧的时间缩减到大约 10 个时间戳。数据库中的所有时间戳都是使用 python 中的 time() 制作的。

创建时间戳:

_timestamp = time.time()

时间戳:

1435652632.92778
1435652633.01
1435652633.07
1435652633.13
1435652642.71371
1435652642.77
1435652675.13
1435652675.22
1435652717.74
1435652735.11
1435652735.16
1435652735.24

如何让 python 删除最旧的时间戳?

我目前使用脚本中的以下字符串将时间戳转换为可读格式。

print datetime.datetime.fromtimestamp(1434615010.27858)
>>2015-06-18 08:10:10.278580

我还没有删除最旧时间戳的代码,但我希望能得到一些帮助。

【问题讨论】:

是什么样的数据库?您几乎可以肯定要求 数据库 删除前 10 名之外的行。请参阅Delete all but top n from database table in SQL 时间戳都在一行的一列中,用“-”分隔。 所以它们都在一个字符串中?然后只需拆分,转换为浮点数,排序并仅保留最高的 10 个。如果您想使用最有效的方法,甚至可以使用heapq.nlargest() datetime.datetime() 对象也是可排序的,所以如果您已经将它们转换成这样,只需排序,取前 10 个,等等。 正确的都是字符串格式。 【参考方案1】:

这是一个纪元时间戳,它只是自 1970-01-01T00:00:00Z 以来经过的秒数。

在您的情况下,对时间图进行排序并获取前 10 个元素。

timestmaps = [1435652632.92778, 1435652633.01, 1435652633.07]
timestmaps.sort(reverse=True)
latestTimestamps = timestmaps[:10]

【讨论】:

@MartijnPieters touché :) 您应该使用reverse=True,以保持最新的时间戳。有什么理由不在这里使用heapq.nlargest(10, timestamps)【参考方案2】:

不确定是不是你想要的,但你可以这样做:

timestamps = [1435652632.92778,1435652633.01,1435652633.07,1435652633.13,1435652642.71371,1435652642.77,1435652675.13,1435652675.22,1435652717.74,1435652735.11,1435652735.16,1435652735.24]
timestamps.remove(min(timestamps)) #Remove the minimum value from the list

【讨论】:

以上是关于带有 time() 的 Python 时间戳的主要内容,如果未能解决你的问题,请参考以下文章

Python时间戳与日期的相互转化

Python 时间戳

python如何获取13位的UNIX时间戳

python 根据时间戳获取秒🐱

python获取时间戳

Python获取秒级时间戳与毫秒级时间戳