我使用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假设1968
是19
,因为它会被普遍使用?
或者我应该只是解析字符串并手动插入20
或{{1}}吗?
答案 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。