1

可能重复:
解析日期并使用 python 格式化?

我对 Python 很陌生。我有以下两个字符串:

Mon, 29 Oct 2012 13:07:07 GMT
2012-10-29 12:57:08

我希望python中可以有任何日期解析库,它可以将上述两个字符串解析为如下内容:

2012-10-29 12:57:08

以便我可以比较它们。请注意,比较应该能够产生类似于整数比较的结果。Like1小于2, 所以同样的方式2012-10-29 12:57:08小于2012-10-29 13:57:08

在python中有什么容易做到的吗?

提前致谢。

4

3 回答 3

7

使用该dateutil模块进行一般日期解析:

>>> from dateutil.parser import parse
>>> parse('Mon, 29 Oct 2012 13:07:07 GMT')
datetime.datetime(2012, 10, 29, 13, 7, 7, tzinfo=tzutc())
>>> parse('2012-10-29 12:57:08')
datetime.datetime(2012, 10, 29, 12, 57, 8)

datetime.datetime可以通过多种方式比较对象。

如果您知道要解析的每个日期字符串的确切格式,您还可以使用以下datetime.datetime.strptime()方法更明确地进行解析:

>>> import datetime
>>> datetime.datetime.strptime('Mon, 29 Oct 2012 13:07:07 GMT', '%a, %d %b %Y %H:%M:%S %Z')
datetime.datetime(2012, 10, 29, 13, 7, 7)

但是请注意,该方法会忽略时区!

于 2012-10-29T18:00:00.133 回答
2

是的,time.strptime可以将文本转换为日期表示。从那里你可以用strftime你喜欢的方式打印它。

>>> a = '2012-10-29 12:57:08'
>>> time.strptime(a, '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2012, tm_mon=10, tm_mday=29, tm_hour=12, tm_min=57, tm_sec=8, tm_wday=0, tm_yday=303, tm_isdst=-1)
>>> b = 'Mon, 29 Oct 2012 13:07:07 GMT'
>>> time.strptime(b, '%a, %d %b %Y %H:%M:%S %Z')
time.struct_time(tm_year=2012, tm_mon=10, tm_mday=29, tm_hour=13, tm_min=7, tm_sec=7, tm_wday=0, tm_yday=303, tm_isdst=0)
于 2012-10-29T17:56:22.870 回答
1

python 中的datetime模块及其strptime功能(字符串解析)可以做到这一点。

例如,您可以像这样使用函数:

somestring = '2004-03-13T03:00:00Z'
result = datetime.datetime.strptime(somestring, '%Y-%m-%dT%H:%M:%SZ')

文档在这里

于 2012-10-29T17:59:34.373 回答