2012-09-05 9 views
15

Sto cercando di inizializzare un oggetto momento come questo:come inizializzare time() dell'oggetto in python

t = datetime.time(0,0,0) 

ma sto ottenendo questo errore:

descriptor 'time' requires a 'datetime.datetime' object but received a 'int' 

ho queste cose importati

import datetime 
from datetime import datetime, date, time 
import time 

Sembrano un po 'ridondanti quindi mi chiedo se questo è ciò che sta causando il problema

Sono anche utilizzando il metodo strptime e il metodo combino

earliest = datetime.combine(earliest, t) 
    value = datetime.strptime(value, format) 

risposta

22

È possibile creare l'oggetto senza alcun valore:

>>> import datetime 
>>> datetime.time() 
datetime.time(0, 0) 

Tu, però, importato il classe datetime dal modulo , sostituendo il modulo stesso:

>>> from datetime import datetime 
>>> datetime.time 
<method 'time' of 'datetime.datetime' objects> 

e che ha una firma diversa :

>>> datetime.time() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: descriptor 'time' of 'datetime.datetime' object needs an argument 
>>> datetime.time(0) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int' 

O importare l'intero modulo, o importare le classi contenute, ma non mix and match. Passa a:

import datetime 
import time 

se sono necessari entrambi i moduli.

+0

Il costruttore a tre parametri è ugualmente valido, solo ridondante. http://docs.python.org/library/datetime.html#datetime.time – Ryan

+0

@Martijn ok, quindi cosa dovrei tenere/modificare? – Santiago

+0

@Martijn Ho provato solo a importare datetime e time ma quando lo faccio ora ottengo questo errore: l'oggetto 'module' non ha attributo 'strptime' che si riferisce a line: value = datetime.strptime (valore, formato) – Santiago

5

È il fatto che si è import in conflitto datetime da datetime. Probabilmente intendevi lo time, ad eccezione del import di uno time in conflitto. Così come su:

import datetime as dt 

e

t = dt.time(0, 0, 0)