web-dev-qa-db-fra.com

comment initialiser un objet time () dans python

J'essaie d'initialiser un objet temps comme celui-ci:

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

mais je reçois cette erreur:

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

J'ai ces choses importées

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

Ils semblent un peu redondants donc je me demande si c'est ce qui cause le problème

J'utilise également la méthode strptime et la méthode combine

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

Vous pouvez créer l'objet sans aucune valeur:

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

Cependant, vous avez importé le class datetime du module, en remplaçant le module lui-même:

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

et qui a une signature différente:

>>> 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'

Soit importez le module entier, soit importez les classes contenues, mais ne mélangez pas et ne correspondez pas. S'en tenir à:

import datetime
import time

si vous avez besoin des deux modules.

33
Martijn Pieters

Le constructeur du temps est:

class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])

(depuis http://docs.python.org/library/datetime.html#time-objects )

Cela fonctionne pour moi:

In [1]: import datetime

In [2]: t = datetime.time(0, 0, 0)

In [3]: print t
00:00:00
14
sandesh247

C'est le fait que vous import un datetime conflictuel de datetime. Vous vouliez probablement dire time, sauf que vous êtes aussiimporting un time en conflit. Alors que diriez-vous:

import datetime as dt

et

t = dt.time(0, 0, 0)
7
Ry-