J'ai une variable qui contiendrait une date ...
start_date = '3/15/2018'
Je veux la sortie comme:
end_date = '3/15/2019'
Quelqu'un peut-il m'aider à écrire le code pour cela?
3 Réponses :
Si c'est toujours une chaîne, vous pouvez découper et soustraire 1 (après conversion en int):
end_date = '3/15/2019' start_date = end_date[:-4] + str(int(end_date[-4:])-1) print(start_date) >>> 3/15/2018
N'oubliez pas le 29 février!
Si vous souhaitez une date strictement 365 jours avant une date donnée:
import datetime
(datetime.datetime.strptime(end_date, '%m/%d/%Y') - datetime.timedelta(days=365)).strftime('%m/%d/%Y')
'03/15/2018'
Je recommande la bibliothèque, arrow, qui vous aide à décaler l'heure par unité (de secondes en années). De plus, il peut gérer les années bissextiles!
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'