2
votes

Obtenir la date un an avant pour une date donnée en python?

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?


0 commentaires

3 Réponses :


1
votes

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


1 commentaires

N'oubliez pas le 29 février!



2
votes

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'


0 commentaires

0
votes

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'

document: https : //arrow.readthedocs.io/en/latest/


0 commentaires