2016-05-04 21 views
0

Ich habe ein kleines Python-Skript geschrieben, um das Alter eines Datensatzes zu bestimmen, und wenn es mehr als eine Woche alt ist. Dazu subtrahiere ich das Aufnahmedatum von now(). Der Datensatz gibt als Datetime das Datum 2016-02-23 09:01:22 zurück.Entfernen Sie Zeit von Timedelta Ausgabe in Python

now = datetime.datetime.now() 
age = now - recordDate 
print age 

diese druckt das Ergebnis als 71 days, 23:56:07.156000

Gibt es einen „pythonic“ Weg, es zu Ausgabe erhalten nur die Tage (und keine Stunden etc.) als meine Hack Lösung von

print str(age).split(',',1)[0] 

, die das Ergebnis als druckt?

+0

in keinem Zusammenhang: die lokale Zeit nicht linear sein kann. Verwenden Sie 'datetime.now()' nicht, wenn Sie den genauen Unterschied finden möchten. Siehe [Finden, ob 24 Stunden zwischen den Datumsangaben verstrichen sind - Python] (http://stackoverflow.com/q/26313520/4279). Wenn es dir in deinem Fall nicht um Stunden geht; Verwenden Sie stattdessen 'date.today()'. – jfs

+0

danke @ J.F.Sebastian – Midavalo

Antwort

3

71 days, 23:56:07.156000 ist eine String-Darstellung der timedelta object.

die Tage nur erhalten, die nur bekommen, na ja, .days:

>>> from datetime import datetime 
>>> 
>>> recordDate = datetime(year=2010, month=10, day=10) 
>>> now = datetime.now() 
>>> age = now - recordDate 
>>> age # age is the timedelta object 
datetime.timedelta(2033, 61630, 853029) 
>>> "%d days" % age.days 
'2033 days' 
+0

Das ist genau das, was ich will, danke. Ich werde es als beantwortet markieren, wenn es mich lässt – Midavalo