Časový modul v Pythonu 3. Hlavní metody, šablony, příklady

Téměř každý program využívá čas. V Pythonu byla pro tento účel vyvinuta samostatná knihovna – časslouží k provádění různých akcí s ním. Aby to fungovalo, musí být nejprve deklarováno na začátku kódu. K tomu slouží tento řádek:

čas importu

Zvažme různé možnosti, jak tento modul správně používat v praxi. 

Určení počtu sekund od epochy

Pro splnění tohoto úkolu existuje funkce čas(), který nemá žádné parametry. Jeho návratová hodnota udává, kolik sekund uplynulo od 1. ledna 1970. V Pythonu se tento čas nazývá začátek epochy. Alespoň v operačních systémech rodiny Unix.

Pokud jde o Windows, datum je stejné, ale mohou nastat problémy se zápornými hodnotami, které byly před tímto datem. 

Použité časové pásmo je UTC.

čas importu

sekundy = time.time()

print("Sekundy od epochy =", sekund)

Složitost této funkce je v tom, že nezobrazuje přesně datum, ale pouze počet sekund. Chcete-li převést do formátu známého všem, musíte použít přesné informace. K tomu slouží funkce time.ctime().

Vrácení data a času v obvyklém formátu

Chcete-li vrátit čas v obvyklém formátu, existuje metoda time.ctime(). Závorky označují proměnnou nebo číslo udávající počet sekund, které uplynuly od začátku epochy. Tato metoda vrací všechny charakteristiky data a času, včetně data, roku, počtu hodin, minut, sekund a dne v týdnu.

Tuto funkci lze použít i bez argumentů. V tomto případě vrátí aktuální datum, čas a tak dále.

Zde je fragment kódu, který to demonstruje.

čas importu

print(time.ctime())

Út 23. října 10:18:23 2018

Poslední řádek je to, co se vytiskne na konzoli, kde běží interpret Pythonu. Metoda automaticky naformátuje přijatý počet sekund do uživatelsky známého tvaru. Je pravda, že všechny výše popsané prvky se používají zřídka. Zpravidla je potřeba získat buď pouze čas, nebo pouze dnešní datum. K tomu slouží samostatná funkce – strftime(). Než to však zvážíme, musíme třídu analyzovat time.struct_time.

třída čas.struct_time

Toto je kategorie argumentů, které lze přijmout řadou metod. Nemá žádné možnosti. Je to n-tice s pojmenovaným rozhraním. Jednoduše řečeno, k prvkům této třídy lze přistupovat jak podle jména, tak podle čísla indexu.

Skládá se z následujících atributů.Časový modul v Pythonu 3. Hlavní metody, šablony, příklady

Pozornost! Na rozdíl od řady jiných programovacích jazyků se zde měsíc může pohybovat od 1 do 12, a ne od nuly do 11.

Vrácení konkrétního formátu

Pomocí funkce strftime() můžete získat rok, měsíc, den, hodinu, minuty, sekundy jednotlivě a vrátit je do textového řetězce. Poté jej lze pomocí funkce vytisknout uživateli tisk () nebo jinak zpracovány.

Jako argument může funkce převzít jakoukoli proměnnou, která nabývá hodnoty vrácené jinými funkcemi tohoto modulu. Můžete do něj například přenést místní čas (o něm bude řeč), ze kterého vytáhne potřebná data.

Zde je fragment kódu, kde to děláme.

čas importu

named_tuple = time.localtime() # get struct_time

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

print(časový_řetězec)

Pokud tento kód spustíte, zobrazí se aktuální datum a čas. Formát a pořadí prvků lze změnit. Jsou následující:

  1. %Y je rok.
  2. %m je měsíc.
  3. %d – den.
  4. %H – čas.
  5. %M – minuty.
  6. %S – sekunda.

Podle toho to můžete udělat tak, že výstup bude výhradně měsíc a den. K tomu jednoduše nemusíte zadávat příkaz k zobrazení roku. To znamená, napište do výše uvedeného vzorce jako argument %m/%d a je to. Nebo naopak, %d/%m. 

Ve skutečnosti je počet řetězcových literálů mnohem větší. Zde je tabulka, kde jsou podrobně popsány.Časový modul v Pythonu 3. Hlavní metody, šablony, příklady

Odložte vlákno na určitý počet sekund

K tomu slouží funkce spát (). S plynutím času je spojen poměrně velký blok programovacích úloh. Někdy musíte další krok odložit na určitou dobu. Pokud například potřebujete pracovat s databází, jejíž zpracování trvá určitou dobu.

Jako argument metoda používá hodnotu, která vyjadřuje počet sekund zpoždění dalšího kroku od algoritmu.

Například v tomto úryvku je zpoždění 10 sekund.

čas importu

pauza = 10

tisk ("Program spuštěn…")

čas.spánek (pauza)

print(str(pauza) + »uběhly sekundy.»)

Ve výsledku dostaneme toto:

Program zahájen…

uplynulo 10 sekund.

Jak vidíme z výstupu, program nejprve hlásí, že byl spuštěn. A po deseti sekundách napsala, že tato doba uplynula.

Funkce umožňuje zadat dobu trvání pauzy v milisekundách. K tomu používáme zlomkové hodnoty argumentu funkce spát. Například 0,1. To znamená, že zpoždění bude 100 milisekund.

Získejte místní čas

Pomocí funkce localtime() program získá počet sekund od začátku epochy v určitém časovém pásmu. 

Pro názornost uveďme příklad kódu.

čas importu

výsledek = time.localtime(1575721830)

tisk ("výsledek:", výsledek)

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

print(«tm_hour:», result.tm_hour)

Vrátí struct_time v UTC na základě počtu sekund od epochy

Tohoto úkolu je dosaženo pomocí time.gmtime(). metoda. Jasnější to bude, když uvedeme příklad.

čas importu

výsledek = time.gmtime(1575721830)

tisk ("výsledek:", výsledek)

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

print(«tm_hour:», result.tm_hour)

Pokud tuto sekvenci akcí zapnete, zobrazí se sada prvků souvisejících s časem, rokem a časovým pásmem.

Vrátí počet sekund od začátku epochy s automatickým převodem na místní čas

Pokud stojíte před takovým úkolem, je implementován pomocí metody mktime(), který trvá struct_time. Poté provede opačnou akci funkce místní čas(). To znamená, že převádí čas podle místního časového pásma na počet sekund, které uplynuly od začátku epochy, upravený pro časové pásmo.

Funkce mktime() a localtime() jsou úzce propojeny. Tento fragment kódu to jasně ukazuje. Pojďme se na to podívat, abychom hlouběji pochopili, jak to funguje. 

čas importu

sekund = 1575721830

# vrátí struct_time

t = time.localtime(sekundy)

tisknout(«t1: «, t)

# vrací sekundy z struct_time

s = čas.mktime(t)

print(«ns:», sekundy)

Vidíme, že proměnná sekundy od epochy mu bylo přiděleno 1575721830 sekund. Nejprve program získá přesné datum, čas a další parametry, na základě této hodnoty ji vloží do proměnné ta poté převede její obsah na proměnnou s.

Poté odbije nový řádek a zobrazí počet sekund v konzole. Můžete zkontrolovat, že se bude jednat o stejné číslo, které bylo přiřazeno proměnné sekund.

Datum výstupu z 9 čísel, která odkazují na struct_time

Předpokládejme, že máme 9 čísel představujících rok, měsíc, datum, den v týdnu a řadu dalších hodnot a potřebujeme je spojit do jednoho řetězce. K tomu slouží funkce asctime(). Přijímá nebo je připravena struct_time, nebo jakákoli jiná n-tice 9 hodnot, která znamená totéž. Poté je vrácen řetězec, což je datum, čas a řada dalších parametrů. 

Je velmi výhodné použít tuto metodu, aby se nesourodá data zadaná uživatelem přenesla do jediné proměnné..

Může se například jednat o program, kde uživatel samostatně specifikuje den, měsíc, rok, den v týdnu a další údaje týkající se registrace na akci. Poté jsou obdržené informace vloženy do databáze a následně vydány další osobě, která si je vyžádá.

Získání času a data na základě řetězce Python

Předpokládejme, že uživatel zadal nesourodá data a my je potřebujeme sloučit do jednoho řádku ve formátu, který osoba zadala, a poté vytvořit kopii do jiné proměnné a tam ji znovu sestavit do standardního formátu. K tomu slouží funkce time.strptime().

Vezme proměnnou, ve které je tato hodnota specifikována, a vrátí nám již známou struct_time.

Pro názornost si takový program napíšeme.

čas importu

time_string = «15. června 2019»

výsledek = time.strptime(časový_řetězec, «%d %B, %Y»)

tisknout (výsledek)

Hádejte, jaký bude výstup? Zkuste hádat, aniž byste se dívali na spodní řádek. A pak zkontrolujte odpověď.

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)

Jedním slovem, práce s daty a časy v Pythonu není vůbec obtížná. Stačí dodržovat tyto pokyny a vše bude fungovat. Používání knihovny čas uživatel získává obrovské množství příležitostí pro práci s časem, jako např.

  1. Pozastavit provádění programu na určitou dobu.
  2. Ukažte čas, který uplynul od epochy, v sekundách. Tyto informace lze použít k sečtení času nebo k provádění jiných matematických operací s nimi.
  3. Převést do vhodného formátu. Programátor si navíc může sám nastavit, které prvky se budou zobrazovat a v jakém pořadí. 

Existuje také řada dalších možností, dnes jsme však rozebrali ty nejzákladnější. Budou se hodit téměř v každém programu, který nějak pracuje s časem. Hodně štěstí.

Napsat komentář