将“4 天前”等转换为实际日期

Converting '4 days ago' etc. to the actual dates

我有一个巨大的电子表格,其中所有日期都是这样写的:

2 days ago 
9 days ago
34 days ago
54 days ago
etc.

如果我告诉 Python“1 天前”是什么日期,是否有聪明的 Python 方法将这些数据转换为实际日期?

使用timedelta.

从电子表格中的字符串中提取值,然后使用

d = date.today() - timedelta(days_to_subtract)

如果输入日期格式可能略有不同(人工输入),那么您可以使用 parsedatetime module 将人类可读的 date/time 文本解析为 datetime 对象:

#!/usr/bin/env python
import sys
from datetime import datetime
import parsedatetime  # $ pip install parsedatetime

now = datetime(2015, 3, 8) # the reference date
cal = parsedatetime.Calendar()
for line in sys.stdin: # at most one date per line
    dt, type = cal.parseDT(line, now)
    if type > 0:
        print(dt)

输出

2015-03-06 00:00:00
2015-02-27 00:00:00
2015-02-02 00:00:00
2015-01-13 00:00:00