Подтвердить что ты не робот

Какое самое старое время может быть представлено в Python?

Я написал функцию comp(time1, time2) которая будет возвращать True когда time1 меньше time2. У меня есть сценарий, где time1 всегда должно быть меньше time2. Мне нужно, чтобы time1 имело наименьшее возможное значение (т. time1 Представляло собой самый ранний возможный момент). Как я могу получить это время?

4b9b3361

Ответ 1

Если вы используете стандартные отметки времени unix timestamp, то самый ранний представляемый момент времени возвращается в 1970 году:

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

Ответ 2

Если вы используете модуль datetime, date, time, а datetime все имеют атрибут min и max.

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

Ответ 3

В python объект datetime экспортирует следующие константы

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

Ответ 4

Некоторые функции в модуле datetime подчиняются datetime.MINYEAR и datetime.MAXYEAR и вызывают ValueException для дат вне этого диапазона. Они присвоены 1 и 9999 соответственно.

Модуль calender значительной степени опирается на модуль datetime, но в целом соблюдает "пролептический григорианский", который бесконечно распространяется в обоих направлениях.

модуль time аналогичным образом не накладывает особых ограничений на элементы года в значениях кортежа времени и вычисляет время и даты, используя только секунды с начала эпохи.


При этом нельзя достоверно обрабатывать даты до 12 февраля 1582 года, когда был принят григорианский календарь. До этого дня даты вычислялись с использованием различных зависящих от местоположения каландров, для которых нет поддержки в стандартном Python.

Ответ 5

Если вы используете модуль time, у вас нет гарантии, потому что он относится к функциям библиотеки C на платформе, которые могут обрабатывать разное минимальное и максимальное время. https://docs.python.org/3/library/time.html сообщает:

Большинство функций, определенных в этом модуле, вызывают библиотечные функции платформы C с тем же именем. Иногда может быть полезно ознакомиться с документацией платформы, потому что семантика этих функций варьируется в зависимости от платформы.

и https://docs.python.org/3/library/time.html#time.mktime сообщает:

Самая ранняя дата, для которой он может генерировать время, зависит от платформы.

Это потому, что эти функции принимают или возвращают значения time_t и в соответствии со стандартом C11:

Диапазон и точность времени, представленного в clock_t и time_t определяются реализацией.

В отличие от модуля datetime модуль time не предоставляет никаких констант, указывающих минимальные и максимальные значения, которые он поддерживает, поэтому, если вам действительно нужно найти минимальное и максимальное значения для вашей платформы, вам нужно написать некоторый код, чтобы найти их экспериментально в время выполнения, например, с использованием экспоненциального поиска.