web-dev-qa-db-fra.com

Quel est le temps le plus ancien qui peut être représenté en python?

J'ai écrit une fonction comp(time1, time2) qui retournera True quand time1 est inférieur à time2. J'ai un scénario où time1 devrait toujours être inférieur à time2. J'ai besoin de time1 Pour avoir la valeur la moins possible (c'est-à-dire représenter le plus tôt possible). Comment puis-je obtenir ce temps?

37
Prabhu

Si vous utilisez des valeurs d'horodatage Standard Numéro Unix, le plus tôt le moment de temps représentable est de retour en 1970:

>>> import time
>>> time.gmtime(0)
(1970, 1, 1, 0, 0, 0, 3, 1, 0)
7
korona

Si vous utilisez le module - DateTime , date , heure , et DateTime Objets ont tous un min et max attribut.

>>> from datetime import date, time, datetime
>>> date.min
datetime.date(1, 1, 1)
>>> date.max
datetime.date(9999, 12, 31)
>>> time.min
datetime.time(0, 0)
>>> time.max
datetime.time(23, 59, 59, 999999)
>>> datetime.min
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
72
cledoux

En Python, l'objet DateTime exporte les constantes suivantes

datetime.MINYEAR
The smallest year number allowed in a date or datetime object. MINYEAR is 1.

datetime.MAXYEAR
The largest year number allowed in a date or datetime object. MAXYEAR is 9999.

http://docs.python.org/library/dateTime.html

15
Silfverstrom

Si vous utilisez le module time, vous n'avez aucune garantie, car il se présente à la bibliothèque C sur la plate-forme pouvant gérer des temps minimum et maximum définis par la mise en œuvre. https://docs.python.org/3/library/time.html States:

La plupart des fonctions définies dans cette plate-forme de la plate-forme d'appel de module C fonctionnent avec le même nom. Il peut parfois être utile de consulter la documentation de la plate-forme, car la sémantique de ces fonctions varie selon les plates-formes.

et https://docs.python.org/3/library/time.htmftime.mktime States:

La date la plus ancienne pour laquelle il peut générer un temps dépend de la plate-forme.

C'est parce que ces fonctions prennent ou retournent time_t valeurs et par la norme C11:

La gamme et la précision des temps représentables dans clock_t et time_t sont définis par la mise en œuvre.

Contrairement au module datetime, le module time _ N'expose aucune constance indiquant les valeurs minimales et maximales qu'il prend en charge, de sorte que si vous avez vraiment besoin de trouver le min et max pour votre plate-forme, vous devez besoin d'écrire du code pour les trouver expérimentalement au moment de l'exécution, par exemple en utilisant une recherche exponentielle .

0
Mark Amery