96 votes

temps python + équivalent timedelta

J'essaie de faire quelque chose comme ça:

 time() + timedelta(hours=1)
 

Cependant, Python ne le permet pas , apparemment pour une bonne raison.

Est-ce que quelqu'un a un travail simple autour?

Apparenté, relié, connexe:

157voto

J.F. Sebastian Points 102961

La solution est dans le lien que vous avez fourni dans votre question:

 datetime.combine(date.today(), time()) + timedelta(hours=1)
 

Exemple complet:

 from datetime import date, datetime, time, timedelta

dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30)
print dt.time()
 

Sortie:

 00:25:00
 

14voto

rescdsk Points 4136

Si ça vaut la peine d'en ajouter un autre fichier / dépendance à votre projet, je viens d'écrire un petit peu de classe qui étend la classe datetime.time avec la capacité de faire de l'arithmétique. Si vous allez au-delà de minuit, il vient de s'enroule autour de:

>>> from nptime import nptime
>>> from datetime import timedelta
>>> afternoon = nptime(12, 24) + timedelta(days=1, minutes=36)
>>> afternoon
nptime(13, 0)
>>> str(afternoon)
'13:00:00'

Il est disponible sur PyPi comme nptime (ğ non-pédant temps"), ou sur GitHub: https://github.com/tgs/nptime

La documentation est à http://tgs.github.io/nptime/

8voto

sth Points 91594

Solution de contournement:

 t = time()
t2 = time(t.hour+1, t.minute, t.second, t.microsecond)
 

Vous pouvez également omettre les microsecondes, si vous n'avez pas besoin de beaucoup de précision.

7voto

Ali Afshar Points 22836

C'est un peu méchant, mais:

 from datetime import datetime, timedelta

now = datetime.now().time()
# Just use January the first, 2000
d1 = datetime(2000, 1, 1, now.hour, now.minute, now.second)
d2 = d1 + timedelta(hours=1, minutes=23)
print d2.time()
 

3voto

user21041 Points 1

Vous pouvez changer le temps () à maintenant () pour que cela fonctionne

 datetime.now() + timedelta(hours=1)
 

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