Différence entre les modules datetime et time Python

137

Je suis en train de comprendre les différences entre les datetimeet timemodules, et ce que chacun doit être utilisé pour.

Je sais que cela datetimefournit à la fois les dates et l'heure. A quoi sert le timemodule?

Des exemples seraient appréciés et les différences concernant les fuseaux horaires seraient particulièrement intéressantes.

myusuf3
la source

Réponses:

102

le timemodule est principalement destiné à travailler avec des horodatages unix; exprimé sous forme de nombre à virgule flottante pris en secondes depuis l'époque unix. le datetimemodule peut prendre en charge plusieurs des mêmes opérations, mais fournit un ensemble de types plus orienté objet et a également une prise en charge limitée des fuseaux horaires.

SingleNegationElimination
la source
22
De plus, quelles sont les différences entre timeet datetime.time?
SparkAndShine
Ce serait bien de détailler les propriétés comme si c'était en temps réel / monotone. Comme dans le standard POSIX, vous avez: CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_THREAD, etc ... Sur les horloges POSIX voir: stackoverflow.com/questions/3523442/...
Vajk Hermecz
12

Tenez-vous en à timepour éviter toute ambiguïté DST.

Utilisez exclusivement le timemodule système au lieu du datetimemodule pour éviter les problèmes d'ambiguïté avec l'heure d'été (DST) .

La conversion vers n'importe quel format d'heure, y compris l'heure locale, est assez simple:

import time
t = time.time()

time.strftime('%Y-%m-%d %H:%M %Z', time.localtime(t))
'2019-05-27 12:03 CEST'

time.strftime('%Y-%m-%d %H:%M %Z', time.gmtime(t))
'2019-05-27 10:03 GMT'

time.time()est un nombre à virgule flottante représentant le temps en secondes depuis l'époque du système. time.time()est idéal pour l'horodatage sans ambiguïté.

Si le système exécute en plus le dæmon de protocole de temps réseau (NTP) , on se retrouve avec une base de temps assez solide.

Voici la documentation du timemodule.

Serge Stroobandt
la source
Dans votre exemple, vous utilisez time.localtime(), ce qui a bien sûr été intégré à l'heure d'été. Si nous voulons être des puristes, ne devrions-nous pas utiliser à la time.gmtime()place? :)
Seamus
@Seamus Il suffit de tester les deux commandes dans des ipythonshows qui time.gmtime()donnent un tuple, alors que time.time()donne l' heure UNIX sous la forme d'une seule valeur décimale des secondes écoulées depuis 00:00:00 UTC, le jeudi 1er janvier 1970. La fonction time.localtime(t)convertit l'heure de l'époque en heure locale. tuple de temps. Donc, la réponse à votre question est «non».
Serge Stroobandt
Existe-t-il un moyen d'ajouter des jours à un objet de temps? avec datetime, il y a la méthode timedelta (days = 6).
Nehemias Herrera
@NehemiasHerrera t = time.time()est un nombre à virgule flottante représentant le temps en secondes depuis l'époque système. Par conséquent, on peut simplement ajouter ou soustraire 86 400 secondes pour chaque jour; t += 86400
Serge Stroobandt
5

Le module de temps peut être utilisé lorsque vous avez juste besoin de l'heure d'un enregistrement particulier - comme disons que vous avez une table / un fichier séparé pour les transactions pour chaque jour, alors vous auriez juste besoin de l'heure. Cependant, le type de données heure est généralement utilisé pour stocker la différence de temps entre 2 moments.

Cela peut également être fait en utilisant datetime, mais si nous ne traitons que l'heure d'un jour particulier, alors le module time peut être utilisé.

Datetime est utilisé pour stocker des données et une heure particulières pour un enregistrement. Comme dans une agence de location. La date d'échéance serait un type de données datetime.

Jan S
la source
3

Si vous êtes intéressé par les fuseaux horaires, vous devriez envisager l'utilisation de pytz.

donkopotame
la source
8
il semble qu'il s'intéresse le plus aux modules de temps et de date / heure et aux différences de fuseaux horaires entre eux. avec tout le respect que je vous dois, introduire une autre dépendance dans ce domaine est à peu près hors de propos.
sbartell
3
Le support des fuseaux horaires dans les modules time et datetime est vraiment très médiocre ... s'il est vraiment intéressé par la gestion des fuseaux horaires de manière utile, il devrait vraiment connaître pytz. Vous apportez des dépendances pour résoudre le problème que vos dépendances actuelles ne vous aident pas à résoudre votre problème ...
donkopotamus