这可能是一个非常基础的问题,但在阅读文档后,我仍然无法弄清如何做到这一点...
我有两个包含 未知格式 的日期字符串。我不知道它们所使用的具体格式,除了我知道它们都是有效的日期时间表达式。例如,其中一个可能采用ISO格式,而另一个则采用其他格式。
我只需要能够比较这些日期。将字符串转换为适当的日期时间对象以进行比较的正确方法是什么?
谢谢!
这可能是一个非常基础的问题,但在阅读文档后,我仍然无法弄清如何做到这一点...
我有两个包含 未知格式 的日期字符串。我不知道它们所使用的具体格式,除了我知道它们都是有效的日期时间表达式。例如,其中一个可能采用ISO格式,而另一个则采用其他格式。
我只需要能够比较这些日期。将字符串转换为适当的日期时间对象以进行比较的正确方法是什么?
谢谢!
dateutil模块 中的日期解析器可以解析多种格式的日期字符串。
例如:
In [13]: import dateutil.parser as parser
In [14]: parser.parse("19970902T090000")
Out[14]: datetime.datetime(1997, 9, 2, 9, 0)
In [15]: import datetime as dt
In [16]: now = dt.datetime.now()
In [17]: now.isoformat()
Out[18]: '2012-11-06T15:08:51.393631'
In [19]: parser.parse('2012-11-06T15:08:51.393631')
Out[19]: datetime.datetime(2012, 11, 6, 15, 8, 51, 393631)
In [20]: parser.parse('November 6, 2012')
Out[20]: datetime.datetime(2012, 11, 6, 0, 0)
请注意,有些日期时间字符串可能存在歧义:10-09-2003
例如可以意味着10月9日或9月10日。 dateutil
有一些参数,如dayfirst
和yearfirst
来处理这个问题:
In [21]: parser.parse("10-09-2003")
Out[21]: datetime.datetime(2003, 10, 9, 0, 0)
In [22]: parser.parse("10-09-2003", dayfirst = True)
Out[22]: datetime.datetime(2003, 9, 10, 0, 0)
In [23]: parser.parse("10-09-03", yearfirst = True)
Out[23]: datetime.datetime(2010, 9, 3, 0, 0)