127 votes

Python comparaison du temps de

Comment puis-je comparer les temps en python?

Je vois que la date de comparaisons peuvent être faites et il y a aussi "timedelta", mais j'ai du mal à savoir comment faire pour vérifier si l'heure actuelle (à partir de datetime.maintenant()) est plus haut, le même, ou au plus tard dans un délai spécifié (par exemple, de 8h du matin), indépendamment de la date.

75voto

Pär Wieslander Points 11258

Vous pouvez utiliser l' time() méthode de datetime objets pour obtenir l'heure de la journée, que vous pouvez utiliser pour la comparaison, sans prendre la date en compte:

>>> this_morning = datetime.datetime(2009, 12, 2, 9, 30)
>>> last_night = datetime.datetime(2009, 12, 1, 20, 0)
>>> this_morning.time() < last_night.time()
True

13voto

Kimvais Points 12453

Vous pouvez comparer datetime.datetime objets directement

E. g:

>>> a
datetime.datetime(2009, 12, 2, 10, 24, 34, 198130)
>>> b
datetime.datetime(2009, 12, 2, 10, 24, 36, 910128)
>>> a < b
True
>>> a > b
False
>>> a == a
True
>>> b == b
True
>>>

6voto

AndrewR Points 33

Inspiré par Roger Pate:

import datetime
def todayAt (hr, min=0, sec=0, micros=0):
   now = datetime.datetime.now()
   return now.replace(hour=hr, minute=min, second=sec, microsecond=micros)    

# Usage demo1:
print todayAt (17), todayAt (17, 15)

# Usage demo2:    
timeNow = datetime.datetime.now()
if timeNow < todayAt (13):
   print "Too Early"

3voto

Tom Dignan Points 4065

Une autre façon de le faire sans l'ajout de dépendances ou d'utiliser datetime est tout simplement de faire quelques calculs sur les attributs de l'objet en temps. Il a des heures, minutes, secondes, millisecondes, et le fuseau horaire. Pour de très simples comparaisons, les heures et les minutes devraient suffire.

d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second

Je ne recommande pas de faire cela, sauf si vous avez un incroyablement simple d'utilisation-cas. Pour tout ce qui requiert le fuseau horaire de sensibilisation ou de prise de conscience de dates, vous devriez être en utilisant datetime.

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