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?
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)
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)
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.
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
ettime_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 .