python:如何将“x天前”或“x个月前”转换为日期?

Lea*_*AWK 0 python date

如何在Python中将以下语句转换为日期(不需要时间)?

10 days ago
about 2 months ago
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的代码:

import re
from datetime import datetime, timedelta

def string_to_delta(s):
    value = int(re.search(r'\d+', s).group())
    if "day" in s:
        value = value*1
    elif "month" in s:
        value = value *30   
    date_ago = (datetime.now() - timedelta(days=value)).date() 
    str_date= date_ago.strftime("%d %B %Y")
    return str_date
Run Code Online (Sandbox Code Playgroud)

它有效,但我感觉很尴尬。

enr*_*cis 5

所以一个完整的函数是:

from dateutil.relativedelta import relativedelta
from datetime import datetime

def ago_do_date(ago):
    value, unit = re.search(r'(\d+) (\w+) ago', ago).groups()
    if not unit.endswith('s'):
        unit += 's'
    delta = relativedelta(**{unit: int(value)})
    print datetime.now() - delta
Run Code Online (Sandbox Code Playgroud)