背景
"5 days 12 hours ago" みたいな文字列と, 基準日から, 実際の日付を得たい.
ぺろっと文字列渡してよろしく処理してくれるライブラリは無いようです.
方法
のように, 自前でパースして, dateutil
の relativedelta
で差分計算します.
re
はめんどいので, {}
でパースできる parse
を使います.
from dateutil.relativedelta import relativedelta
from datetime import datetime
import parse
def ago_do_date(ago, ref_date):
p = parse.parse('{} days {} hrs ago', ago)
print(p)
delta = relativedelta(days=int(p[0]), hours=int(p[1]))
print(ref_date - delta)
print(datetime.now())
s = "16 days 16 hrs ago"
ago_do_date(s, datetime.now())
2021-04-14 18:29:29.754215
<Result ('16', '16') {}>
2021-03-29 02:29:29.754248
Voila!