【问题标题】:How can I sort a date and time from oldest to newest in the format of ['2020-05-27 15:26:57', '2020-05-22 16:40:58']? [closed]如何以 ['2020-05-27 15:26:57', '2020-05-22 16:40:58'] 的格式将日期和时间从最旧到最新排序? [关闭]
【发布时间】:2020-10-08 18:50:41
【问题描述】:

从 bzr 存储库中,我可以使用

从不同的修订提交返回时间戳

branch.repository.get_revision(revision_id).timestamp

获得时间戳后,我可以使用:datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S') 来获得2020-05-27 15:26:57 的格式。

我要将其中的一些存储到一个列表中,然后从那里我需要将它们从最早的日期和时间排序到最新的日期和时间。我查看了这里已经存在的许多其他问题,但似乎没有一个答案很容易转化为这种情况。

【问题讨论】:

  • 你有没有试过在你的名单上打电话给sorted()
  • 你卡在哪里了?在转换之前或之后对日期进行排序。您的编码尝试在哪里?它有什么问题?
  • 这能回答你的问题吗? How do I sort a list of datetime or date objects?

标签: python sorting datetime bazaar


【解决方案1】:

在您的列表中调用 sorted() 应该可以解决问题:

lst = ['2020-05-27 15:26:57','2020-06-27 15:26:57','2020-03-27 15:26:57']
sorted(lst)

Output: ['2020-03-27 15:26:57', '2020-05-27 15:26:57', '2020-06-27 15:26:57']

我们也可以使用lst.sort() 来做这个技巧:

lst.sort()
lst
Output: ['2020-03-27 15:26:57', '2020-05-27 15:26:57', '2020-06-27 15:26:57']

【讨论】:

  • 我认为这可能有效!我会做一些测试并确保。
  • 很好,如果是,请批准答案:)
  • 这将根据字符串中的字符进行排序——这将起作用,因为这些是 ISO 格式的日期时间。但是,根据时间戳(浮点数)进行排序并在之后转换为字符串会更合乎逻辑,你不觉得吗?
  • 我实际上首先需要更新的日期,所以我所要做的就是 reverse=True 它就像一个魅力
  • @newtopython:您可以使用相同的方法对数字列表进行排序 - 然后将 strptime 应用于“人类可读”格式所需的所有元素。
【解决方案2】:

由于日期和时间已经从影响最大到影响最小排序,只需使用内置的sort() 方法进行列表。

list = [timestamp_1, timestamp_2, ...]
list.sort()  # now its sorted

这很有效,因为您所有的日期/时间都具有相同的格式等等。

为了加快速度,您也可以省略转换为字符串,只使用 unix-timestamp 进行排序。您以后可以随时使用您的方法将其转换为字符串,以使其可读。

【讨论】:

  • 除了reverse=True之外,我还需要任何关于如何排序的标识符吗?因为当我运行 x = mylist.sort(reverse=True) 并打印 x 时,我得到 None 作为我的输出
  • .sort() 是一个void 方法,它什么也不返回。它在列表本身上运行,因此原始列表已更改,您必须打印它。不要覆盖它。
猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多