240 votes

Comment incrémenter une date d'un jour ?

Comment incrémenter le jour d'une date ?

for i in range(1, 35)
    date = datetime.datetime(2003, 8, i)
    print(date)

Mais je dois passer les mois et les années correctement ? Avez-vous des idées ?

8voto

Aus_10 Points 158

C'était une solution simple pour moi :

from datetime import timedelta, datetime

today = datetime.today().strftime("%Y-%m-%d")
tomorrow = datetime.today() + timedelta(1)

0 votes

Cela ne répond pas directement à la question de l'OP, parce que cela suppose today() et n'est pas aussi bonne que la réponse acceptée car elle suppose que l'unité d'incrémentation par défaut est days .

0 votes

@MarkHu Je ne dis pas que ma réponse devrait être acceptée. Mais pourriez-vous élaborer sur ce que l'hypothèse est de today() et pourquoi c'est une mauvaise hypothèse ? De plus, la question ne demande-t-elle pas des jours ? Est-ce que l'affirmation selon laquelle la réponse acceptée est une réponse plus générale ?

0 votes

1. Le PO a demandé comment trouver le jour suivant une date arbitraire, pas aujourd'hui. Votre exemple de code a assigné une variable nommée today comme une chaîne de caractères, puis ne l'a jamais utilisé. C'est mieux : date = datetime.today() 2. Votre dernière ligne est codée en dur today() et a assumé le premier arg de timedelta es days (qui se trouve être correct, mais pourquoi ne pas le nommer pour plus de clarté ?) Mieux : laterDate = date + timedelta(days=1) # IMHO :)

0voto

Roy Points 9

Vous pouvez également importer timedelta pour que le code soit plus propre.

from datetime import datetime, timedelta
date = datetime.now() + timedelta(seconds=[delta_value])

Ensuite, convertissez la date en chaîne de caractères

date = date.strftime('%Y-%m-%d %H:%M:%S')

La phrase de Python est

date = (datetime.now() + timedelta(seconds=[delta_value])).strftime('%Y-%m-%d %H:%M:%S')

-4voto

Ace Pash Points 11

Une solution courte sans aucune bibliothèque :)

d = "8/16/18"
day_value = d[(d.find('/')+1):d.find('/18')]
tomorrow = f"{d[0:d.find('/')]}/{int(day_value)+1}{d[d.find('/18'):len(d)]}".format()
print(tomorrow)
# 8/17/18

Assurez-vous que " chaîne d "est en fait sous la forme %m/%d/%Y pour que vous n'ayez pas de problèmes de transition d'un mois à l'autre.

4 votes

Si vous définissez d a 8/31/18 alors ceci renvoie 8/32/18 . Si vous changez l'année de 18 c'est juste que ça casse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X