Python strptime解析没有世纪的年份:在今年之前假设?

时间:2015-10-29 06:14:20

标签: python datetime

我使用d = '10/12/68' n = datetime.strptime(d, '%d/%m/%y') print n 2068-12-10 00:00:00 在Python 2.7中解析一些日期时间字符串。我想假设日期早于现在。

但strptime的%y operator默认不这样做:

68

有什么方法可以让Python假设196819,因为它会被普遍使用?

或者我应该只是解析字符串并手动插入20或{{1}}吗?

2 个答案:

答案 0 :(得分:7)

事后很容易解决:

from datetime import datetime, timedelta
dt = datetime.strptime(...)
if dt > datetime.now():
    dt -= timedelta(years=100)

答案 1 :(得分:2)

如果您的输入位于本地时区:

from datetime import date

then = datetime.strptime('10/12/68', '%d/%m/%y').date()
if date.today() <= then: # *then* must be in the past
    then = then.replace(year=then.year - 100)

它应该工作到2100年(不包括)。请参阅此处more details on arithmetic with calendar years