2009-04-01 5 views
27

In Python versuche ich das Datum/die Zeit, die genau 30 Tage (30 * 24 Stunden) in die Vergangenheit ist, abzurufen. Derzeit mache ich einfach:Wie würde ich genau 30 Tage in die Vergangenheit mit Python (bis auf die Minute) berechnen?

>>> import datetime 
>>> start_date = datetime.date.today() + datetime.timedelta(-30) 

, die ein Datetime-Objekt zurückgibt, aber ohne Zeitdaten:

>>> start_date.year 
2009 
>>> start_date.hour 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'datetime.date' object has no attribute 'hour' 
+0

Nicht wirklich sicher, warum jemand -1'd das. –

Antwort

59

Sie wollen statt ein datetime Objekt verwenden, nur ein date Objekt:

start_date = datetime.datetime.now() + datetime.timedelta(-30) 

date speichert nur ein Datum und time nur einmal. datetime ist ein Datum mit einer Uhrzeit.

+0

Ah, genagelt. Vielen Dank. –

+0

nett und explizit! :) –

-6

datum <> datetime

+0

Es ist tatsächlich. Sie sind nicht dasselbe. –

+2

Dies ist Python, nicht Pascal. <> ist veraltet. :( –

+2

Verwenden Sie '! =' Anstelle von '<>' in Python. – jfs