Frage

Es muss ein einfacherer Weg, dies zu tun. Ich habe Objekte, die jeder so oft aktualisiert werden soll, so dass ich aufnehmen wollen, wenn sie erstellt wurden, überprüfen Sie gegen den aktuellen Zeitstempel und aktualisieren, falls erforderlich.

datetime.datetime hat sich als schwierig erwiesen, und ich will nicht zu tauchen Sie in die ctime Bibliothek. Gibt es etwas einfacher für diese Art der Sache?

War es hilfreich?

Lösung

, wenn Sie Unterschiede zwischen zwei bekannten Daten zu berechnen, verwenden total_seconds wie folgt aus:

import datetime as dt

a = dt.datetime(2013,12,30,23,59,59)
b = dt.datetime(2013,12,31,23,59,59)

(b-a).total_seconds()

86.400,0

#note that seconds doesn't give you what you want:
(b-a).seconds

0

Andere Tipps

import time  
current = time.time()

...job...
end = time.time()
diff = end - current

würde das für Sie arbeiten?

>>> from datetime import datetime

>>>  a = datetime.now()

# wait a bit 
>>> b = datetime.now()

>>> d = b - a # yields a timedelta object
>>> d.seconds
7

(7 werden, was viel Zeit Sie ein wenig über gewartet)

Ich finde datetime.datetime ziemlich nützlich sein, also wenn es eine komplizierte oder peinliche Szenario, dass Sie begegnet sind, lassen Sie es uns wissen.

EDIT: Dank @WoLpH für den Hinweis auf, dass man nicht immer unbedingt die Suche so häufig zu aktualisieren, dass die Datetimes nahe beieinander sein. Durch Berücksichtigung für die Tage im Delta, können Sie längere Zeitstempel Abweichungen behandeln:

>>> a = datetime(2010, 12, 5)
>>> b = datetime(2010, 12, 7)
>>> d = b - a
>>> d.seconds
0
>>> d.days
2
>>> d.seconds + d.days * 86400
172800

Wir haben Funktion total_seconds () mit Python 2.7 siehe unten Code für Python 2.6

import datetime
import time  

def diffdates(d1, d2):
    #Date format: %Y-%m-%d %H:%M:%S
    return (time.mktime(time.strptime(d2,"%Y-%m-%d %H:%M:%S")) -
               time.mktime(time.strptime(d1, "%Y-%m-%d %H:%M:%S")))

d1 = datetime.now()
d2 = datetime.now() + timedelta(days=1)
diff = diffdates(d1, d2)

Hier ist derjenige, der für mich arbeitet.

from datetime import datetime

date_format = "%H:%M:%S"

# You could also pass datetime.time object in this part and convert it to string.
time_start = str('09:00:00') 
time_end = str('18:00:00')

# Then get the difference here.    
diff = datetime.strptime(time_end, date_format) - datetime.strptime(time_start, date_format)

# Get the time in hours i.e. 9.60, 8.5
result = diff.seconds / 3600;

Hope, das hilft!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top