2009-08-21 3 views
21

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

5

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

Właściwie nie, dla time.gmtime() jest to -67768040609740804 dla 1. stycznia roku -2147481748. –

13

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. 

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

5

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.

32

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)