Python 3 - Data i czas
Program w Pythonie może obsługiwać datę i godzinę na kilka sposobów. Konwertowanie między formatami daty jest częstym obowiązkiem komputerów. Moduły czasu i kalendarza w Pythonie ułatwiają śledzenie dat i godzin.
Co to jest Tick?
Przedziały czasu to liczby zmiennoprzecinkowe w jednostkach sekund. Poszczególne momenty w czasie są wyrażane w sekundach od godziny 12:00 1 stycznia 1970 roku (epoka).
Jest popularny timemoduł dostępny w Pythonie, który udostępnia funkcje do pracy z czasami i do konwersji między reprezentacjami. Funkcjatime.time() zwraca bieżący czas systemowy w taktach od godziny 00:00 1 stycznia 1970 roku (epoka).
Przykład
#!/usr/bin/python3
import time; # This is required to include time module.
ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
Dałoby to następujący wynik -
Number of ticks since 12:00am, January 1, 1970: 1455508609.34375
Arytmetyka dat jest łatwa do wykonania przy pomocy tików. Jednak dat sprzed epoki nie można przedstawić w tej formie. Daty w odległej przyszłości również nie mogą być przedstawiane w ten sposób - punkt odcięcia przypada w 2038 roku dla systemów UNIX i Windows.
Co to jest TimeTuple?
Wiele funkcji czasu w Pythonie traktuje czas jako krotkę 9 liczb, jak pokazano poniżej -
Indeks | Pole | Wartości |
---|---|---|
0 | 4-cyfrowy rok | 2016 |
1 | Miesiąc | Od 1 do 12 |
2 | Dzień | Od 1 do 31 |
3 | Godzina | Od 0 do 23 |
4 | Minuta | Od 0 do 59 |
5 | druga | 0 do 61 (60 lub 61 to sekundy przestępne) |
6 | Dzień tygodnia | 0 do 6 (0 to poniedziałek) |
7 | Dzień roku | 1 do 366 (dzień juliański) |
8 | Czas letni | -1, 0, 1, -1 oznacza, że biblioteka określa czas letni |
Na przykład -
import time
print (time.localtime());
Dałoby to następujący wynik -
time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9,
tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
Powyższa krotka jest równoważna struct_timeStruktura. Ta struktura ma następujące atrybuty -
Indeks | Atrybuty | Wartości |
---|---|---|
0 | tm_year | 2016 |
1 | tm_mon | Od 1 do 12 |
2 | tm_mday | Od 1 do 31 |
3 | tm_hour | Od 0 do 23 |
4 | tm_min | Od 0 do 59 |
5 | tm_sec | 0 do 61 (60 lub 61 to sekundy przestępne) |
6 | tm_wday | 0 do 6 (0 to poniedziałek) |
7 | tm_yday | 1 do 366 (dzień juliański) |
8 | tm_isdst | -1, 0, 1, -1 oznacza, że biblioteka określa czas letni |
Pobieram aktualny czas
Aby przetłumaczyć moment czasowy z sekund od wartości zmiennoprzecinkowej epoki na harmonogram, należy przekazać wartość zmiennoprzecinkową do funkcji (np. Czasu lokalnego), która zwraca krotkę czasu ze wszystkimi prawidłowymi dziewięcioma elementami.
#!/usr/bin/python3
import time
localtime = time.localtime(time.time())
print ("Local current time :", localtime)
Dałoby to następujący wynik, który można sformatować w dowolnej innej możliwej do zaprezentowania formie -
Local current time : time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15,
tm_hour = 9, tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
Uzyskiwanie sformatowanego czasu
Możesz formatować w dowolnym momencie zgodnie z wymaganiami, ale prostą metodą uzyskania czasu w czytelnym formacie jest asctime() -
#!/usr/bin/python3
import time
localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)
Dałoby to następujący wynik -
Local current time : Mon Feb 15 09:34:03 2016
Otrzymuję kalendarz na miesiąc
Moduł kalendarza oferuje szeroki wachlarz metod gry z kalendarzami rocznymi i miesięcznymi. Tutaj drukujemy kalendarz na dany miesiąc (styczeń 2008) -
#!/usr/bin/python3
import calendar
cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)
Dałoby to następujący wynik -
Here is the calendar:
February 2016
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29
Moduł czasu
Jest popularny timemoduł dostępny w Pythonie, który udostępnia funkcje do pracy z czasami i do konwersji między reprezentacjami. Oto lista wszystkich dostępnych metod.
Sr.No. | Opis funkcji |
---|---|
1 | time.altzone Przesunięcie lokalnej strefy czasowej DST, w sekundach na zachód od czasu UTC, jeśli takie zostało zdefiniowane. Jest to wartość ujemna, jeśli lokalna strefa czasowa DST znajduje się na wschód od czasu UTC (jak w Europie Zachodniej, w tym w Wielkiej Brytanii). Użyj tego, jeśli światło dzienne jest niezerowe. |
2 | time.asctime ([tupletime]) Akceptuje krotkę czasu i zwraca czytelny 24-znakowy ciąg, na przykład „Tue Dec 11 18:07:14 2008”. |
3 | zegar( ) Zwraca bieżący czas procesora jako zmiennoprzecinkową liczbę sekund. Aby zmierzyć koszty obliczeniowe różnych podejść, wartość time.clock jest bardziej użyteczna niż wartość time.time (). |
4 | time.ctime ([sek.]) Jak asctime (localtime (secs)) i bez argumentów jest jak asctime () |
5 | time.gmtime ([sek.]) Akceptuje moment wyrażony w sekundach od epoki i zwraca krotkę czasu t z czasem UTC. Uwaga - t.tm_isdst ma zawsze wartość 0 |
6 | time.localtime ([sek.]) Akceptuje chwilę wyrażoną w sekundach od epoki i zwraca krotkę czasu t z czasem lokalnym (t.tm_isdst wynosi 0 lub 1, w zależności od tego, czy czas letni ma zastosowanie do chwilowych sekund według reguł lokalnych). |
7 | time.mktime (tupletime) Akceptuje moment wyrażony jako krotka czasowa w czasie lokalnym i zwraca wartość zmiennoprzecinkową z chwilą wyrażoną w sekundach od epoki. |
8 | time.sleep (sek.) Zawiesza wątek wywołujący na sekundę. |
9 | time.strftime (fmt [, tupletime]) Akceptuje moment obrotowy wyrażony jako krotka czasu w czasie lokalnym i zwraca ciąg znaków reprezentujący chwilę określoną przez string fmt. |
10 | time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y') Analizuje str zgodnie z ciągiem formatu fmt i zwraca moment w formacie krotki czasu. |
11 | czas czas( ) Zwraca bieżącą chwilę czasu, zmiennoprzecinkową liczbę sekund od epoki. |
12 | time.tzset () Resetuje reguły konwersji czasu używane przez procedury biblioteczne. Zmienna środowiskowa TZ określa, jak to się robi. |
W module czasu dostępne są dwa ważne atrybuty. Oni są -
Sr.No. | Atrybut i opis |
---|---|
1 | time.timezone Atrybut time.timezone to przesunięcie w sekundach lokalnej strefy czasowej (bez czasu letniego) od czasu UTC (> 0 w obu Amerykach; <= 0 w większości krajów Europy, Azji i Afryki). |
2 | time.tzname Atrybut time.tzname to para ciągów zależnych od ustawień regionalnych, które są nazwami lokalnej strefy czasowej, odpowiednio, bez i z czasem letnim. |
Moduł kalendarza
Moduł kalendarza udostępnia funkcje związane z kalendarzem, w tym funkcje drukowania kalendarza tekstowego na dany miesiąc lub rok.
Domyślnie kalendarz przyjmuje poniedziałek jako pierwszy dzień tygodnia, a niedzielę jako ostatni. Aby to zmienić, zadzwoń docalendar.setfirstweekday() funkcjonować.
Oto lista funkcji dostępnych z calendar moduł -
Sr.No. | Opis funkcji |
---|---|
1 | calendar.calendar(year,w = 2,l = 1,c = 6) Zwraca wielowierszowy ciąg z kalendarzem na rok sformatowany w trzech kolumnach oddzielonych spacjami. w jest szerokością w znakach każdej daty; każda linia ma długość 21 * w + 18 + 2 * c. l to liczba wierszy na każdy tydzień. |
2 | calendar.firstweekday( ) Zwraca bieżące ustawienie dla dnia tygodnia rozpoczynającego się każdego tygodnia. Domyślnie, gdy kalendarz jest importowany po raz pierwszy, jest to 0, co oznacza poniedziałek. |
3 | calendar.isleap(year) Zwraca wartość Prawda, jeśli rok jest rokiem przestępnym; w przeciwnym razie False. |
4 | calendar.leapdays(y1,y2) Zwraca całkowitą liczbę dni przestępnych w latach w zakresie (y1, y2). |
5 | calendar.month(year,month,w = 2,l = 1) Zwraca wielowierszowy ciąg z kalendarzem na miesiąc miesiąc rok rok, jeden wiersz na tydzień plus dwa wiersze nagłówka. w jest szerokością w znakach każdej daty; każda linia ma długość 7 * w + 6. l to liczba wierszy na każdy tydzień. |
6 | calendar.monthcalendar(year,month) Zwraca listę list int. Każda podlista oznacza tydzień. Dni poza miesiącem rokiem są ustawiane na 0; dni w miesiącu są ustawiane na dzień miesiąca, 1 i nowsze. |
7 | calendar.monthrange(year,month) Zwraca dwie liczby całkowite. Pierwsza z nich to kod dnia tygodnia pierwszego dnia miesiąca miesiąc w roku; druga to liczba dni w miesiącu. Kody dni tygodnia to 0 (poniedziałek) do 6 (niedziela); numery miesięcy to od 1 do 12. |
8 | calendar.prcal(year,w = 2,l = 1,c = 6) Podobnie jak drukowanie kalendarza. Kalendarz (rok, w, l, c). |
9 | calendar.prmonth(year,month,w = 2,l = 1) Podobnie jak drukowanie kalendarza. Miesiąc (rok, miesiąc, w, l). |
10 | calendar.setfirstweekday(weekday) Ustawia pierwszy dzień każdego tygodnia na kod dnia tygodnia. Kody dni tygodnia to 0 (poniedziałek) do 6 (niedziela). |
11 | calendar.timegm(tupletime) Odwrotność time.gmtime: akceptuje moment czasowy w postaci krotki czasowej i zwraca ten sam moment, co zmiennoprzecinkowa liczba sekund od epoki. |
12 | calendar.weekday(year,month,day) Zwraca kod dnia tygodnia dla podanej daty. Kody dni tygodnia to 0 (poniedziałek) do 6 (niedziela); Numery miesięcy to od 1 (styczeń) do 12 (grudzień). |
Inne moduły i funkcje
Jeśli jesteś zainteresowany, tutaj znajdziesz listę innych ważnych modułów i funkcji do zabawy z datą i godziną w Pythonie -
- Moduł datetime
- Moduł pytz
- Moduł dateutil