在python中获取给定日期的日期之前的一年?

时间:2019-03-15 13:02:05

标签: python python-3.x

我有一个包含日期的变量...

end_date = '3/15/2019'

我希望输出为:

start_date = '3/15/2018'  

任何人都可以帮助我如何为此编写代码吗?

3 个答案:

答案 0 :(得分:2)

如果您要在给定日期之前365天严格约会:

import datetime
(datetime.datetime.strptime(end_date, '%m/%d/%Y') - datetime.timedelta(days=365)).strftime('%m/%d/%Y')

'03/15/2018'

答案 1 :(得分:1)

如果它始终是字符串,则可以切片并减去1(在转换为int之后):

end_date = '3/15/2019'

start_date = end_date[:-4] + str(int(end_date[-4:])-1)

print(start_date)

>>> 3/15/2018

答案 2 :(得分:1)

我建议使用箭头库,该库支持您将时间单位(从秒转换为年)。而且,它可以应对leap年!

import arrow


date_format = 'M/D/YYYY'
end_date = '2/29/2016'

# shift by years:
start_date = arrow.get(end_date, date_format).shift(years=-1)
start_date = start_date.format(date_format)
print(start_date)

>>> '2/28/2015'

# shift by 365 days:
start_date = arrow.get(end_date, date_format).shift(days=-365)
start_date = start_date.format(date_format)
print(start_date)

>>> '3/1/2015'

文档:https://arrow.readthedocs.io/en/latest/