解析此日期的Python:2010 11月5日
-
27-09-2019 - |
题
我有一个坏的时间与日期解析和格式化今天。
点的人谁可以解析此日期格式转换成datetime.date
或datetime.datetime
(我不是太挑剔,但我宁愿.date
):
5th November 2010
解决方案
使用 dateutil :
In [2]: import dateutil.parser as dparser
In [3]: date = dparser.parse('5th November 2010')
In [4]: date
Out[4]: datetime.datetime(2010, 11, 5, 0, 0)
其他提示
不幸的是,strptime
具有用于“跳过的序后缀”无格式字符 - 因此,我会做第一跳跃,用少许RE,然后解析所得到的“清除”的字符串。即:
>>> import re
>>> import datetime
>>> ordn = re.compile(r'(?<=\d)(st|nd|rd|th)\b')
>>> def parse(s):
... cleans = ordn.sub('', s)
... dt = datetime.datetime.strptime(cleans, '%d %B %Y')
... return dt.date()
...
>>> parse('5th November 2010')
datetime.date(2010, 11, 5)
您为date
VS datetime
偏好是当然没有问题的,这是.date()
的datetime
方法对象什么是;。 - )
第三方扩展如 dateutil 如果你需要做的“模糊”了很多非常有用日期解析(或其它花式日期有关的东西;-),顺便。
如果序号是常数,则:
datetime.strptime(s, '%dth %B %Y')
否则:
date_str = '5th November 2010'
modified_date_str = date_str[0:1] + date_str[3:]
datetime.strptime(modified_date_str, '%d %B %Y')
或者如〜unutbu所述使用dateutil :)
不隶属于 StackOverflow