Moduł czasu w Pythonie 3. Główne metody, szablony, przykłady

Prawie każdy program wykorzystuje czas. W Pythonie opracowano do tego osobną bibliotekę – czassłuży do wykonywania z nim różnych działań. Aby to zadziałało, musi być najpierw zadeklarowane na początku kodu. Ta linia służy do tego:

czas importu

Rozważmy różne możliwości prawidłowego korzystania z tego modułu w praktyce. 

Określanie liczby sekund od epoki

Aby wykonać to zadanie, istnieje funkcja czas(), który nie przyjmuje parametrów. Jego wartość zwracana to liczba sekund, które minęły od 1 stycznia 1970 roku. W Pythonie ten czas nazywa się początkiem epoki. Przynajmniej w systemach operacyjnych z rodziny Unix.

Jeśli chodzi o Windows, data jest taka sama, ale mogą wystąpić problemy z wartościami ujemnymi, które były przed tą datą. 

Używana strefa czasowa to UTC.

czas importu

sekundy = czas.czas()

print("Sekundy od epoki =", sekundy)

Złożoność tej funkcji polega na tym, że nie wyświetla dokładnej daty, a jedynie liczbę sekund. Aby dokonać konwersji do formatu znanego wszystkim, musisz użyć dokładnych informacji. W tym celu używana jest funkcja czas.ctime().

Zwracanie daty i godziny w zwykłym formacie

Aby zwrócić czas w zwykłym formacie, istnieje metoda czas.ctime(). Nawiasy kwadratowe wskazują zmienną lub liczbę wskazującą liczbę sekund, które minęły od początku epoki. Ta metoda zwraca wszystkie cechy daty i godziny, w tym datę, rok, liczbę godzin, minut, sekund i dzień tygodnia.

Ta funkcja może być również używana bez argumentów. W takim przypadku zwraca bieżącą datę, godzinę i tak dalej.

Oto fragment kodu, który to demonstruje.

czas importu

print(czas.ctime())

wt. 23 paź 10:18:23 2018

Ostatnia linia jest wypisywana w konsoli, na której działa interpreter Pythona. Metoda automatycznie formatuje otrzymaną liczbę sekund do postaci znanej użytkownikowi. To prawda, że ​​wszystkie opisane powyżej elementy są rzadko używane. Z reguły musisz podać tylko godzinę lub tylko dzisiejszą datę. W tym celu wykorzystywana jest osobna funkcja – strfttime(). Ale zanim to rozważymy, musimy przeanalizować klasę czas.czas_struktury.

klasa czas.struct_time

Jest to kategoria argumentów, które można zaakceptować różnymi metodami. Nie ma żadnych opcji. Jest to krotka z nazwanym interfejsem. Mówiąc najprościej, do elementów tej klasy można uzyskać dostęp zarówno według nazwy, jak i numeru indeksu.

Składa się z następujących atrybutów.Moduł czasu w Pythonie 3. Główne metody, szablony, przykłady

Uwaga! W przeciwieństwie do wielu innych języków programowania, tutaj miesiąc może wynosić od 1 do 12, a nie od zera do 11.

Zwracanie określonego formatu

Korzystanie z funkcji strftime() możesz pobrać rok, miesiąc, dzień, godzinę, minuty, sekundy indywidualnie i zwrócić je do ciągu tekstowego. Następnie można go wydrukować użytkownikowi za pomocą funkcji drukuj () lub w inny sposób przetwarzane.

Jako argument funkcja może przyjąć dowolną zmienną, która przyjmuje wartość zwracaną przez inne funkcje tego modułu. Na przykład możesz przenieść do niego czas lokalny (zostanie to omówione później), z którego wyciągnie niezbędne dane.

Oto fragment kodu, w którym to robimy.

czas importu

named_tuple = time.localtime() # pobierz struct_time

time_string = time.strftime(«%m/%d/%Y, %H:%M:%S», nazwana_krotka)

drukuj(czas_łańcuch)

Jeśli uruchomisz ten kod, zostanie wyświetlona bieżąca data i godzina. Format i kolejność elementów można zmienić. Są to:

  1. %Y to rok.
  2. %m to miesiąc.
  3. %dzień D.
  4. %H – czas.
  5. %M – minuty.
  6. %S – sekunda.

W związku z tym możesz sprawić, że dane wyjściowe będą dotyczyły wyłącznie miesiąca i dnia. Aby to zrobić, po prostu nie musisz wydawać polecenia wyświetlania roku. To znaczy, napisz w powyższej formule jako argument %m/%d i to wszystko. Lub odwrotnie, %d/%m. 

W rzeczywistości liczba literałów łańcuchowych jest znacznie większa. Oto tabela, w której są one szczegółowo opisane.Moduł czasu w Pythonie 3. Główne metody, szablony, przykłady

Odłóż wątek na określoną liczbę sekund

W tym celu używana jest funkcja spać (). Dość duży blok zadań programistycznych wiąże się z upływem czasu. Czasami trzeba odłożyć kolejny krok na pewien czas. Na przykład, jeśli musisz wejść w interakcję z bazą danych, której przetworzenie zajmuje określoną ilość czasu.

Jako argument metoda używa wartości, która wyraża liczbę sekund opóźnienia następnego kroku algorytmu.

Na przykład w tym fragmencie opóźnienie wynosi 10 sekund.

czas importu

pauza = 10

print(«Program uruchomiony…»)

czas.sen(pauza)

print(str(pauza) + » minęły sekundy.»)

W rezultacie otrzymamy to:

Program rozpoczęty…

Minęło 10 sekund.

Jak widać z danych wyjściowych, program najpierw zgłasza, że ​​został uruchomiony. A po dziesięciu sekundach napisała, że ​​ten czas minął.

Funkcja pozwala określić czas trwania pauzy w milisekundach. W tym celu używamy wartości ułamkowych argumentu funkcji spać. Na przykład 0,1. Oznacza to, że opóźnienie wyniesie 100 milisekund.

Uzyskaj czas lokalny

Używając funkcji localtime(), program pobiera liczbę sekund od początku epoki w określonej strefie czasowej. 

Podajmy przykładowy kod dla jasności.

czas importu

wynik = czas.czas lokalny (1575721830)

print("wynik:", wynik)

print(«nгод:», wynik.tm_rok)

print(«tm_godzina:», wynik.tm_godzina)

Zwróć struct_time w UTC na podstawie liczby sekund od epoki

To zadanie jest realizowane za pomocą time.gmtime(). metoda. Będzie jaśniej, jeśli podamy przykład.

czas importu

wynik = czas.gmtime (1575721830)

print("wynik:", wynik)

print(«nгод:», wynik.tm_rok)

print(«tm_godzina:», wynik.tm_godzina)

Jeśli włączysz tę sekwencję działań, zostanie wyświetlony zestaw elementów związanych z czasem, rokiem i strefą czasową.

Zwróć liczbę sekund od początku epoki z automatyczną konwersją na czas lokalny

Jeśli staniesz przed takim zadaniem, jest ono realizowane metodą mktime(), które wymaga czas_struktury. Następnie wykonuje odwrotne działanie funkcji czas lokalny(). Oznacza to, że konwertuje czas zgodnie z lokalną strefą czasową na liczbę sekund, które minęły od początku epoki, dostosowaną do strefy czasowej.

Funkcje mktime() i localtime() są ze sobą ściśle powiązane. Ten fragment kodu wyraźnie to pokazuje. Przyjrzyjmy się temu, aby głębiej zrozumieć, jak to działa. 

czas importu

sekundy = 1575721830

# zwraca struct_time

t = czas.czas lokalny (sekundy)

drukuj(«t1: «, t)

# zwraca sekundy z struct_time

s = czas.mktime(t)

print(«ns:», sekundy)

Widzimy, że zmienna sekund został przypisany 1575721830 sekund od epoki. Najpierw program pobiera dokładną datę, godzinę i inne parametry, na podstawie tej wartości, umieszcza ją w zmiennej t, a następnie konwertuje jego zawartość na zmienną s.

Następnie wybija nową linię i wyświetla w konsoli liczbę sekund. Możesz sprawdzić, czy będzie to ta sama liczba, która została przypisana do zmiennej sekund.

Wyprowadź datę z 9 liczb, które odnoszą się do struct_time

Załóżmy, że mamy 9 liczb reprezentujących rok, miesiąc, datę, dzień tygodnia oraz szereg innych wartości i musimy je połączyć w jeden ciąg. W tym celu używana jest funkcja czas wznoszenia(). Akceptuje lub jest gotowa czas_struktury, lub dowolna inna krotka 9 wartości, która oznacza to samo. Następnie zwracany jest ciąg znaków, czyli data, godzina i szereg innych parametrów. 

Korzystanie z tej metody jest bardzo wygodne w celu zebrania różnych danych określonych przez użytkownika w jednej zmiennej..

Na przykład może to być program, w którym użytkownik określa osobno dzień, miesiąc, rok, dzień tygodnia oraz inne dane dotyczące rejestracji na wydarzenie. Następnie otrzymane informacje są wprowadzane do bazy danych, a następnie przekazywane innej osobie, która o to poprosi.

Pobieranie czasu i daty na podstawie łańcucha Pythona

Załóżmy, że użytkownik podał różne dane i musimy je połączyć w jeden wiersz we wprowadzonym formacie, a następnie wykonać kopię do innej zmiennej i przebudować ją do standardowego formatu. W tym celu używana jest funkcja czas.strptime().

Pobiera zmienną, w której określona jest ta wartość, i zwraca nam już znajome czas_struktury.

Dla jasności napiszemy taki program.

czas importu

time_string = «15 czerwca, 2019»

wynik = time.strptime(czas_ciąg, «%d %B, %Y»)

drukuj(wynik)

Zgadnij, jaki będzie wynik? Spróbuj zgadnąć, nie patrząc na wynik końcowy. A potem sprawdź odpowiedź.

time.struct_time(tm_year=2019, tm_mon=6, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=166, tm_isdst=-1)

Jednym słowem, praca z datami i godzinami w Pythonie wcale nie jest trudna. Wystarczy postępować zgodnie z tymi instrukcjami, a wszystko się ułoży. Korzystanie z Biblioteki czas użytkownik otrzymuje ogromną ilość możliwości pracy z czasem, takich jak:

  1. Zawieś wykonywanie programu na określony czas.
  2. Pokaż czas, który minął od epoki, w sekundach. Informacje te można wykorzystać do podsumowania czasu lub wykonania na nim innych operacji matematycznych.
  3. Konwertuj na wygodny format. Co więcej, sam programista może ustawić, które elementy będą wyświetlane iw jakiej kolejności. 

Istnieje również szereg innych możliwości, ale dzisiaj przeanalizowaliśmy te najbardziej podstawowe. Przydadzą się w prawie każdym programie, który jakoś działa z czasem. Powodzenia.

Dodaj komentarz