2013-02-27 14 views
13

Ich möchte nur den Zeitteil in datetime vergleichen. Ich habe verschiedene Daten mit nur Zeitfeld zu vergleichen. Da die Daten unterschiedlich sind und nur die Zeit, die ich berücksichtigen möchte, denke ich, die Erstellung von zwei Datetime-Objekt wird nicht helfen. mein String alsNur Zeitteil in Datetime vergleichen - Python

start="22:00:00" 
End="03:00:00" 
Tocompare="23:30:00" 

Above Strings ist, wenn ich sie mit Datetime konvertieren als

dt=datetime.strptime(start,"%H:%M:%S") 

gibt es

1900-01-01 22:00:00 

, die in Python Standarddatum ist. Also ich muss all das vermeiden und will nur zeit part. Ich muss einfach überprüfen muss mein Tocompare fällt zwischen start und End

Antwort

7

ihre Zeiten vergleichen datetime.time() verwenden.

+0

auch Zeitmodul hält Teil Datum und ich brauche nur Zeit Teil. @ Jarmod –

+1

Nach http://docs.python.org/3.3/library/datetime.html#datetime.time, ein Zeitobjekt darstellt eine (lokale) Tageszeit, unabhängig von einem bestimmten Tag. – jarmod

+0

o Entschuldigung ich habe es gerade herausgefunden ... danke für die Antwort –

2
import datetime 

start = datetime.datetime.strptime(start, '%H:%M:%S') 
start = datetime.time(start.hour, start.minute,start.second) 

tocompare = datetime.datetime.strptime(tocompare, '%H:%M:%S') 
tocompare = datetime.time(tocompare.hour, tocompare.minute, tocompare.second) 

start > tocompare # False 
23

Rufen Sie einfach die Zeit() Methode der Datetime-Objekte in ihre Stunden, Minuten, Sekunden und Mikrosekunden zu erhalten.

dt=datetime.strptime(start,"%H:%M:%S").time() 
+0

Vielen Dank @matt –