在Python中排序日期

时间:2017-05-25 12:39:49

标签: python

我有一个庞大的数据库,其中包含一个“发布时间”字段。

此字段包含的值包括:2天前,3个月前,5分钟前...

我可以用艰难的方式对其进行排序,首先查看第二个参数(日,月,分钟),然后查看第一个参数,即数字。

我想知道是否有更好(更容易)的方式?

2 个答案:

答案 0 :(得分:4)

如其中一条评论中所述,重新考虑更改数据库结构(或至少是此列)。只要你可以将它与某个固定的时间点相关联(这意味着 - 你有某种'绝对'值,如纪元时间),比较日期的整个点是有意义的。

如果您无法处理数据库设计或该架构存在一些模糊的目的,您可以检查现有的PIP包:

https://pypi.python.org/pypi/dateparser

来自包文档:

  

功能

     
      
  • 使用英语,西班牙语,荷兰语,俄语和20多种其他语言以及语言中的多种格式对日期进行一般解析   不可知论的时尚。
  •   
  • 通用解析相关日期,例如:'1分钟前','2周前','3个月,1周和1天前','2天','明天'。
  •   
  • 使用时区缩写或UTC偏移量的日期的一般解析,例如:'2015年8月14日美国东部时间','2013年7月4日太平洋标准时间','7月21日   2013年10:15 pm +0500'。

  •   
  • 支持非公历日历系统。请参阅支持的日历。

  •   
  • 广泛的测试覆盖率。
  •   

答案 1 :(得分:1)

这些模糊的价值" x y'之前"清楚地显示从一些原始源数据计算的显示值。 您是从某些API获取这些数据吗?

您应该尝试获取这些显示值背后的原始数据。可能是"庞大的数据库"您从这些记录中获取这些记录的方式可以返回日期的绝对值,而不是这些模糊的记录。

(顺便说一句,我发现目前使用所谓的人性化模糊日期戳的趋势非常烦人,特别是当你无法关闭它们时。它不仅会影响屏幕抓取应用程序,这似乎是,但它确实是时间关键数据的障碍,例如带有日期戳记票据的票务系统。我期待看到这种UI趋势减弱。)