2012-08-25 13 views
14

Ich arbeite an einem einfachen Programm, um einer Person mitzuteilen, wie lange sie noch leben.Subtrahieren von Daten mit Python

Ich weiß, wie Sie das aktuelle Datum erhalten und ihren Geburtstag bekommen. Das einzige Problem ist, dass ich die beiden nicht subtrahieren kann. Ich weiß, wie man zwei Daten subtrahiert, aber leider keine Stunden, Minuten oder Sekunden.

Ich bin auf der Suche nach einer Methode, die zwei Daten subtrahieren kann und die Differenz auf die Sekunde, nicht nur den Tag zurückgeben.

+0

ähnliche: [Finden Sie, wenn 24 Stunden zwischen Datetimes bestanden haben - Python] (https://stackoverflow.com/q/26313520/4279) – jfs

Antwort

18
from datetime import datetime 

birthday = datetime(1988, 2, 19, 12, 0, 0) 
diff = datetime.now() - birthday 
print diff 
# 8954 days, 7:03:45.765329 
+4

nicht verwenden Ortszeit ('datetime.now()'). ['Verwenden Sie datetime.utcnow()'] (http://stackoverflow.com/a/12126443/4279). – jfs

4

erstellen datetime.datetime von Ihrem Datum:

datetime.datetime.combine(birthdate, datetime.time()) 

Jetzt können Sie es von datetime.datetime.now() subtrahieren können.

>>> from datetime import date, datetime, time 
>>> bday = date(1973, 4, 1) 
>>> datetime.now() - datetime.combine(bday, time()) 
datetime.timedelta(14392, 4021, 789383) 
>>> print datetime.now() - datetime.combine(bday, time()) 
14392 days, 1:08:13.593813 
3

Wenn Substraktion zwei datettime Objekte erhalten Sie eine datettime.timedelta Objekt erhalten.

from datettime import datetime 
x = datetime.now() 
y = datetime.now() 
delta = y - x 

Es wird Ihnen den Zeitunterschied mit der Auflösung zu Microsencods geben.

Für weitere Informationen nehmen Sie einen Blick auf die official documentation

+0

Das berechnet nicht die Summe der Differenz in Sekunden (die Anzahl der Sekunden maximiert die Anzahl der Sekunden pro Tag) –

5

Verwendung der UTC-Zeit sonst Alter in Sekunden rückwärts während DST Übergang gehen kann:

from datetime import datetime 

born = datetime(1981, 12, 2) # provide UTC time 
age = datetime.utcnow() - born 
print(age.total_seconds()) 

Sie können auch nicht Ortszeit, wenn Ihr Programm läuft verwenden auf einem Computer, der sich an einem anderen Ort befindet (Zeitzone), von wo aus eine Person geboren wurde oder wenn sich die Zeit an diesem Ort seit dem Geburtstag geändert hat. Es könnte einige Stunden Fehler einführen.

Wenn Sie Schaltsekunden berücksichtigen möchten, wird die Aufgabe fast unmöglich.

1
import datetime 
born = datetime.date(2002, 10, 31) 
today = datetime.date.today() 
age = today - born 

print(age.total_seconds()) 

Ausgang: 463363200,0

Verwandte Themen