我有一个坏的时间与日期解析和格式化今天。

点的人谁可以解析此日期格式转换成datetime.datedatetime.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 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top