将“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
我有一个巨大的电子表格,其中所有日期都是这样写的:
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