带有 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 时间戳的主要内容,如果未能解决你的问题,请参考以下文章