Oli*_*Oli 3 python date-formatting python-datetime
我今天的日期解析和格式化时间很糟糕.
对于那些能够将这种日期格式解析为datetime.date或datetime.datetime(我不是太挑剔但我更喜欢.date)的人来说:
5th November 2010
unu*_*tbu 17
使用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)
Run Code Online (Sandbox Code Playgroud)
Ale*_*lli 10
不幸的是,strptime没有"跳过序数后缀"的格式字符 - 所以,我先跳过一点RE,然后解析生成的"clear"字符串.即:
>>> 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)
Run Code Online (Sandbox Code Playgroud)
你对datevs的偏好datetime当然不是问题,那就是对象的.date()方法datetime是什么;-).
如果您需要进行大量"模糊"日期解析(或其他与花哨日期相关的东西;-),那么像dateutil这样的第三方扩展会非常有用.
如果序数是常数,那么:
datetime.strptime(s, '%dth %B %Y')
Run Code Online (Sandbox Code Playgroud)
其他:
date_str = '5th November 2010'
modified_date_str = date_str[0:1] + date_str[3:]
datetime.strptime(modified_date_str, '%d %B %Y')
Run Code Online (Sandbox Code Playgroud)
或者像~unutbu说使用dateutil :)