Par exemple:
from datetime import date
d1 = date(2008,8,15)
d2 = date(2008,9,15)
Je suis à la recherche d'un code simple pour imprimer toutes les dates dans l'entre-deux:
2008,8,15
2008,8,16
2008,8,17
...
2008,9,14
2008,9,15
Merci
Par exemple:
from datetime import date
d1 = date(2008,8,15)
d2 = date(2008,9,15)
Je suis à la recherche d'un code simple pour imprimer toutes les dates dans l'entre-deux:
2008,8,15
2008,8,16
2008,8,17
...
2008,9,14
2008,9,15
Merci
J'ai trouvé ceci:
from datetime import date, timedelta as td
d1 = date(2008,8,15)
d2 = date(2008,9,15)
delta = d2 - d1
for i in range(delta.days + 1):
print d1 + td(days=i)
La sortie:
2008-08-15
2008-08-16
...
2008-09-13
2008-09-14
2008-09-15
Votre question, il est demande pour les dates entre les deux, mais je crois que vous vouliez dire, y compris le début et la fin, donc je les ai repris. Pour supprimer la date de fin, effacer le +1 à la fin de la boucle for. Pour supprimer la date de début, ajouter 1 au début de la fonction range.
À l'aide d'une compréhension de liste:
from datetime import date, timedelta
d1 = date(2008,8,15)
d2 = date(2008,9,15)
# this will give you a list containing all of the dates
dd = [d1 + timedelta(days=x) for x in range((d2-d1).days + 1)]
for d in dd:
print d
# you can't join dates, so if you want to use join, you need to
# cast to a string in the list comprehension:
ddd = [str(d1 + timedelta(days=x)) for x in range((d2-d1).days + 1)]
# now you can join
print "\n".join(ddd)
Essentiellement le même que Gringo Suave de la réponse, mais avec un générateur:
from datetime import datetime, timedelta
def datetime_range(start=None, end=None):
span = end - start
for i in xrange(span.days + 1):
yield start + timedelta(days=i)
Ensuite, vous pouvez l'utiliser comme suit:
In: list(datetime_range(start=datetime(2014, 1, 1), end=datetime(2014, 1, 5)))
Out:
[datetime.datetime(2014, 1, 1, 0, 0),
datetime.datetime(2014, 1, 2, 0, 0),
datetime.datetime(2014, 1, 3, 0, 0),
datetime.datetime(2014, 1, 4, 0, 0),
datetime.datetime(2014, 1, 5, 0, 0)]
Ou comme ceci:
In []: for date in datetime_range(start=datetime(2014, 1, 1), end=datetime(2014, 1, 5)):
...: print date
...:
2014-01-01 00:00:00
2014-01-02 00:00:00
2014-01-03 00:00:00
2014-01-04 00:00:00
2014-01-05 00:00:00
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.