【问题标题】:Normalizing Timestamps in Different formats to a common format将不同格式的时间戳标准化为通用格式
【发布时间】:2015-09-12 11:30:59
【问题描述】:

这听起来可能是一个非常幼稚的问题,但我仍然对此感到好奇。

所以我有以下不同格式的时间戳值:

  1. 2012 年 9 月 17 日星期一 08:20:32 AM CDT
  2. 格林威治标准时间 2013 年 2 月 1 日星期五 12:55:59
  3. 2015-04-07 13:39:21
  4. 2015 年 9 月 11 日星期五 15:58:57 +0000

现在,Python 中有没有一种方法可以比较所有这些不同类型的时间戳,并且可能就像按降序/升序排列它们一样?

我正在考虑可能将所有这些时间戳标准化为一个通用时间戳,然后可以将它们进行比较。这是否有意义,还是他们这样做的一种更有效的方式?

【问题讨论】:

  • dateutil使用parser.parse进行模糊解析
  • 感谢您的指点。但是,以上两个似乎都是相当庞大的库。鉴于我对这些库和 python 本身都比较陌生,我非常感谢我如何利用这些模块来实现所需的示例。
  • 将时间字符串转换为可感知的日期时间对象(固定偏移量tzinfos):dateutil.parser.parse(time_string)。之后,您可以直接比较对象。注意:您的输入(#1、#3)不明确,即,如果您不提供更多信息,一般情况下您可能会得到不准确的结果。

标签: python mysql python-2.7 datetime-format


【解决方案1】:

cmets 已经回答了您的问题。但只是发布一个例子来让你解决这个问题。 dateutil 中的 parser.parse 用于通过模糊解析字符串来获取日期时间对象。

>>> import dateutil
>>> from dateutil import parser
>>> datestrs = ['Monday 17th of September 2012 08:20:32 AM CDT', 'Fri, 01 Feb 2013 12:55:59 GMT', '2015-04-07 13:39:21', 'Fri Sep 11 15:58:57 +0000 2015']
>>> datetime_objs = []
>>> for datestr in datestrs:
...   datetime_objs.append(parser.parse(datestr))
... 
>>> datetime_objs
[datetime.datetime(2012, 9, 17, 8, 20, 32), datetime.datetime(2013, 2, 1, 12, 55, 59, tzinfo=tzutc()), datetime.datetime(2015, 4, 7, 13, 39, 21), datetime.datetime(2015, 9, 11, 15, 58, 57, tzinfo=tzutc())]

你终于有了一个日期时间对象数组。您可以继续进行其他操作,例如比较以按照您想要的方式排列。

【讨论】:

  • 感谢您的回复。这真的很有帮助
  • 快乐是我的 :) 。现在,当您对此进行了解时,请检查 dateutil 库及其用法。
  • @geek_ji: 作为I said,您不能将幼稚的日期时间对象与时区感知的日期时间对象进行比较,即,为了进行适当的比较,您需要针对案例#1、#3 的附加信息。跨度>
  • @J.F.Sebastian 是的,你是对的。这需要完成。
  • @J.F.Sebastian 和 Barun 谢谢大家。我现在对事情有了更好的理解。感谢所有的指点和支持!
猜你喜欢
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
  • 2019-02-17
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多