Je suis nouveau dans la programmation python, j'apprends le module datetime. Mais, en allant plus loin, j'ai vu:

from datetime import datetime
t = datetime.time()
print ("The current time is ", t)

Mais, j'ai eu une erreur comme:

TypeError                                 Traceback (most recent call last)
<ipython-input-109-91a2f569ccbd> in <module>
      8 #print(type(datetime.time()))
      9 # Get the current time
---> 10 t = datetime.time()
     11 
     12 print ("The current time is ", t)

TypeError: descriptor 'time' of 'datetime.datetime' object needs an argument

J'ai donc essayé de voir l'aide pour datetime dans mon notebook jupyter:

class datetime(date)
 |  datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
 |  
 |  The year, month and day arguments are required. tzinfo may be None, or an
 |  instance of a tzinfo subclass. The remaining arguments may be ints.
 |  
 |  Method resolution order:
 |      datetime
 |      date
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  
 |  time(...)
 |      Return time object with same time but with tzinfo=None.
 |  
 |  
 |  now(tz=None) from builtins.type
 |      Returns new datetime object representing current time local to tz.
 |      
 |        tz
 |          Timezone object.
 |      
 |      If no tz is specified, uses local timezone.
 | 

J'ai vu le temps de la fonction de hachage de la classe datetime . Comme indiqué par le notebook jupyter:

time(...)
 |      Return time object with same time but with tzinfo=None.

(Je n'ai pas posté toutes les fonctions ci-dessus) .Je me demande ce que le paramètre de fonction attend? Je ne suis pas sûr de ces trois points, que signifient ces trois points?

Donc, je suis passé aux documents python et https://docs.python.org/3/library/datetime.html#datetime.datetime.year.

Et j'ai vu,

datetime.time()
Return time object with same hour, minute, second, microsecond and fold. tzinfo is None. See also method timetz().

Changed in version 3.6: The fold value is copied to the returned time object.  

Donc, dans cette documentation, je vois que la fonction time () n'a aucun argument à laquelle elle s'attend. , mais dans la documentation, il me montre que la fonction n'attend aucun argument . Quelqu'un peut-il me clarifier comment puis-je voir à partir de juypter notebook ce que la fonction attend?

1
Dikshit Karki 31 août 2020 à 19:09

3 réponses

Meilleure réponse

Dans votre code, vous essayez d'obtenir l'heure directement à partir de l'objet de temps, vous devez donc faire:

from datetime import datetime
t = datetime.now().time()
print ("The current time is ", t)

# The current time is  18:11:56.271907

La méthode de classe datetime.now() est décrite ici

Renvoie la date et l'heure locales actuelles. Si l'argument optionnel tz vaut None ou n'est pas spécifié, c'est comme today (), mais, si possible, fournit plus de précision que ce qui peut être obtenu en passant par un horodatage time.time () (par exemple, cela peut être possible sur les plates-formes fournissant la fonction C gettimeofday ()).

Si vous souhaitez utiliser la fonction time() directement, vous devez modifier votre importation:

import datetime
print(datetime.time())

# datetime.time(0, 0)

L'importation from datetime import datetime signifie que vous importez l ' objet datetime à partir du module datetime, dans cet objet vous avez le objet imbriqué heure <method 'time' of 'datetime.datetime' objects>.

Le module datetime est probablement particulièrement déroutant car le module inclut également une classe datetime, donc datetime.datetime fait référence à la classe datetime dans le module datetime. Si vous faites from datetime import datetime, vous importez uniquement la classe datetime, donc lorsque vous faites référence à datetime dans votre code, cela fait référence à la classe datetime, pas à tout le module datetime.

À l'aide de l'importation import datetime, vous importez directement le module, où se trouve la fonction time() qui utilise la classe <class 'datetime.time'>

La référence à la classe de temps est ici

Un moment idéalisé, indépendant de tout jour particulier, en supposant que chaque jour compte exactement 24 60 60 secondes (il n'y a pas de notion de «saut secondes »ici). Attributs: heure, minute, seconde, microseconde et tzinfo.

La référence à la classe datetime imbriquée dans le module datetime est ici

Une combinaison d'une date et d'une heure. Attributs: année, mois, jour, heure, minute, seconde, microseconde et tzinfo.

Dans cette référence, vous pouvez trouver le datetime.time() méthode d'instance

Objet de temps de retour avec la même heure, minute, seconde, microseconde et pli. tzinfo est None. Voir aussi la méthode timesz ().

5
Carlo Zanocco 1 sept. 2020 à 07:13

Si vous souhaitez uniquement obtenir l'heure réelle, vous pouvez simplement utiliser:

from datetime import datetime

def test_time():

    date = datetime.now()
    time = datetime.time(date)

    print("This is the actual time", time)

Datetime.now () vous donne la date et l'heure réelles combinées. À ce stade, une instance de la classe datetime a été créée. Ensuite, vous pouvez passer cet objet date à la fonction time, qui renvoie simplement l'heure réelle.

De plus, la signature de la classe datetime vous montre que vous devez passer des paramètres lorsque vous souhaitez instancier la classe. Donc, si vous souhaitez créer votre propre date, vous pouvez simplement le faire de la manière suivante:

from datetime import datetime

def test_time():

    date = datetime(year=2020, month=8, day=31, hour=0, minute=0, second=0, microsecond=0)

    print("This is the actual date and time", date)
0
Asocia 31 août 2020 à 18:59

Je ne comprends pas ce que le paramètre de fonction attend? Je ne suis pas sûr de ces trois points, que signifient ces trois points?

Cela signifie que la fonction help n'a pas pu déterminer les arguments réels. La documentation est ici; la méthode n'attend aucun argument. (Oui, il est difficile de rechercher la page car il n'y a pas assez d'ancres de page et bien trop de fois que les mots «date» et «heure» apparaissent; désolé.)

La raison pour laquelle datetime.time() dans votre code ne fonctionne pas est que vous essayez à tort d'appeler une méthode instance en tant que méthode de classe. Cela n'a pas de sens; vous devez avoir une chose réelle qui représente une date et une heure, afin d'en extraire l'heure. Si vous voulez savoir quelle heure il est maintenant, vous créez l’objet représentant la date et l’heure qui représente «maintenant» et obtenez l’heure à partir de cela . Ainsi: datetime.now().time(). Ici, now est une méthode classe qui demande à la classe datetime de créer une instance représentant "maintenant".

2
Karl Knechtel 31 août 2020 à 16:29