Napisałem kompilację funkcji (time1, time2), która zwróci wartość true, gdy time1 będzie mniejsze niż time2. Mam scenariusz, w którym time1 powinien zawsze być mniejszy niż time2. Potrzebuję czasu1, aby mieć najmniejszą możliwą wartość (data). Jak znaleźć ten czas i jak utworzyć odpowiedni obiekt.Jaki jest najstarszy czas, który można przedstawić w pythonie?
Odpowiedz
Jeśli używasz standardowe wartości datownika problem UNIX, wtedy najwcześniej reprezentowalna chwila czasu jest z powrotem w 1970 roku:
>>> import time
>>> time.gmtime(0)
(1970, 1, 1, 0, 0, 0, 3, 1, 0)
W python, obiekt datetime eksportuje następujące stałe
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.
Pewne funkcje w module datetime
są zgodne z datetime.MINYEAR
i datetime.MAXYEAR
i podniosą ValueException
dla dat poza tym zakresem. Są one przypisane odpowiednio do 1 i 9999.
Moduł calender
opiera się w znacznym stopniu na module datetime
, ale generalnie obserwuje “proleptic Gregorian”, który rozciąga się nieskończenie w obu kierunkach.
Moduł analogicznie nie nakłada żadnych szczególnych ograniczeń na elementy roku w wartościach krotki czasu, a oblicza czas i daty za pomocą zaledwie kilku sekund od epoki.
Mając na uwadze powyższe, nie można wiarygodnie przetwarzanie dat przed około 12 lutego 1582 roku, kiedy to kalendarz gregoriański został przyjęty. Przed tym dniem daty były obliczane przy użyciu różnych kalendarzy zależnych od lokalizacji, dla których nie ma wsparcia w standardowym pythonie.
W przypadku korzystania z modułu datetime, date, time, a datetime obiektów wszystkie mają atrybut min
i 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)
Właściwie nie, dla time.gmtime() jest to -67768040609740804 dla 1. stycznia roku -2147481748. –