Modul vremena u Python 3. Glavne metode, šabloni, primjeri

Gotovo svaki program koristi vrijeme. U Pythonu je za to razvijena posebna biblioteka – vrijemekoristi se za obavljanje raznih radnji s njim. Da bi to funkcioniralo, prvo se mora deklarirati na početku koda. Ova linija se koristi za ovo:

vrijeme uvoza

Razmotrimo različite opcije kako pravilno koristiti ovaj modul u praksi. 

Određivanje broja sekundi od epohe

Za postizanje ovog zadatka postoji funkcija vrijeme() koji ne uzima parametre. Njegova povratna vrijednost je koliko je sekundi prošlo od 1. januara 1970. U Pythonu se ovo vrijeme naziva početkom epohe. Barem u operativnim sistemima Unix porodice.

Što se tiče Windowsa, datum je isti, ali može biti problema s negativnim vrijednostima koje su bile prije ovog datuma. 

Vremenska zona koja se koristi je UTC.

vrijeme uvoza

sekundi = time.time()

print(“Sekunde od epohe =”, sekunde)

Složenost ove funkcije je u tome što ne prikazuje tačno datum, već samo broj sekundi. Da biste pretvorili u format poznat svima, morate koristiti tačne informacije. Za to se koristi funkcija time.ctime().

Vraćanje datuma, vremena u uobičajenom formatu

Za vraćanje vremena u uobičajenom formatu postoji metoda time.ctime(). Zagrade označavaju promenljivu ili broj koji označava broj sekundi koji su prošli od početka epohe. Ova metoda vraća sve karakteristike datuma i vremena, uključujući datum, godinu, broj sati, minute, sekunde i dan u sedmici.

Ova funkcija se također može koristiti bez argumenata. U ovom slučaju, vraća trenutni datum, vrijeme i tako dalje.

Evo isječka koda koji to demonstrira.

vrijeme uvoza

print(time.ctime())

Uto Okt 23 10:18:23 2018

Poslednji red je ono što se štampa na konzoli na kojoj se izvodi Python interpreter. Metoda automatski formatira primljeni broj sekundi u obrazac koji je poznat korisniku. Istina, svi gore opisani elementi rijetko se koriste. Po pravilu, morate dobiti ili samo vrijeme, ili samo današnji datum. Za to se koristi posebna funkcija – strftime(). Ali prije nego što to razmotrimo, moramo raščlaniti klasu time.struct_time.

class time.struct_time

Ovo je kategorija argumenata koja se može prihvatiti nizom metoda. Nema nikakve opcije. To je tuple sa imenovanim interfejsom. Jednostavno rečeno, elementima ove klase može se pristupiti i po imenu i po broju indeksa.

Sastoji se od sljedećih atributa.Modul vremena u Python 3. Glavne metode, šabloni, primjeri

Pažnja! Za razliku od brojnih drugih programskih jezika, ovdje se mjesec može kretati od 1 do 12, a ne od nule do 11.

Vraćanje određenog formata

Korištenje funkcije strftime() možete dobiti godinu, mjesec, dan, sat, minute, sekunde pojedinačno i vratiti ih u tekstualni niz. Zatim se može ispisati korisniku pomoću funkcije print () ili na drugi način obrađene.

Kao argument, funkcija može uzeti bilo koju varijablu koja uzima vrijednost koju vraćaju druge funkcije ovog modula. Na primjer, možete na njega prenijeti lokalno vrijeme (o tome će biti riječi kasnije), iz kojeg će izvući potrebne podatke.

Evo isječka koda gdje to radimo.

vrijeme uvoza

named_tuple = time.localtime() # get struct_time

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

print(vremenski niz)

Ako pokrenete ovaj kod, prikazat će se trenutni datum i vrijeme. Format i redoslijed elemenata se mogu mijenjati. One su sljedeće:

  1. %Y je godina.
  2. %m je mjesec.
  3. %d – dan.
  4. %H – vrijeme.
  5. %M – minute.
  6. %S – sekunda.

Shodno tome, možete napraviti tako da izlaz bude isključivo za mjesec i dan. Da biste to učinili, jednostavno ne morate dati naredbu za prikaz godine. Odnosno, zapišite gornju formulu kao argument %m/%d, i to je to. Ili obrnuto, %d/%m. 

U stvari, broj string literala je mnogo veći. Evo tabele u kojoj su oni detaljno opisani.Modul vremena u Python 3. Glavne metode, šabloni, primjeri

Odgodite nit na određeni broj sekundi

Za to se koristi funkcija spavati (). Prilično veliki blok programskih zadataka povezan je s protokom vremena. Ponekad morate odgoditi sljedeći korak za određeno vrijeme. Na primjer, ako trebate komunicirati s bazom podataka za koju je potrebno određeno vrijeme za obradu.

Kao argument, metoda koristi vrijednost koja izražava broj sekundi za odlaganje sljedećeg koraka iz algoritma.

Na primjer, u ovom isječku kašnjenje je 10 sekundi.

vrijeme uvoza

pauza = 10

print(«Program je započeo…»)

vrijeme.spavanje (pauza)

print(str(pauza) + » sekunde su prošle.»)

Kao rezultat, dobićemo ovo:

Program je počeo…

Prošlo je 10 sekundi.

Kao što možemo vidjeti iz izlaza, program prvo javlja da je pokrenut. I nakon deset sekundi napisala je da je ovo vrijeme prošlo.

Funkcija vam omogućava da odredite trajanje pauze u milisekundama. Da bismo to učinili, koristimo razlomke vrijednosti argumenta funkcije spavati. Na primjer, 0,1. To znači da će kašnjenje biti 100 milisekundi.

Uzmite lokalno vrijeme

Koristeći funkciju localtime(), program dobiva broj sekundi od početka epohe u određenoj vremenskoj zoni. 

Dajemo primjer koda radi jasnoće.

vrijeme uvoza

rezultat = time.localtime(1575721830)

print(“rezultat:”, rezultat)

print(«ngod:», rezultat.tm_year)

print(«tm_hour:», result.tm_hour)

Vrati struct_time u UTC-u na osnovu broja sekundi od epohe

Ovaj zadatak se postiže korištenjem time.gmtime(). metoda. Biće jasnije ako damo primjer.

vrijeme uvoza

rezultat = time.gmtime(1575721830)

print(“rezultat:”, rezultat)

print(«ngod:», rezultat.tm_year)

print(«tm_hour:», result.tm_hour)

Ako uključite ovaj slijed radnji, tada će se prikazati skup elemenata koji se odnose na vrijeme, godinu i vremensku zonu.

Vraća broj sekundi od početka epohe sa automatskom konverzijom u lokalno vrijeme

Ako se suočite s takvim zadatkom, on se implementira pomoću metode mktime(), što traje struct_time. Nakon toga vrši obrnutu radnju funkcije lokalno vrijeme(). Odnosno, pretvara vrijeme prema lokalnoj vremenskoj zoni u broj sekundi koje su prošle od početka epohe, prilagođeno vremenskoj zoni.

Funkcije mktime() i localtime() su usko isprepletene. Ovaj isječak koda to jasno pokazuje. Hajde da ga pogledamo kako bismo dublje razumjeli kako funkcionira. 

vrijeme uvoza

sekundi = 1575721830

# vraća struct_time

t = vrijeme.lokalno vrijeme(sekunde)

print(«t1: «, t)

# vraća sekunde iz struct_time

s = vrijeme.mktime(t)

print(«ns:», sekunde)

Vidimo da je varijabla Sekunde je dodijeljeno 1575721830 sekundi od epohe. Prvo, program dobija tačan datum, vreme i druge parametre, na osnovu ove vrednosti, stavlja ga u promenljivu t, a zatim pretvara njegov sadržaj u varijablu s.

Nakon toga otkucava novu liniju i prikazuje broj sekundi u konzoli. Možete provjeriti da li će to biti isti broj koji je dodijeljen varijabli sekunde.

Izlazni datum iz 9 brojeva koji se odnose na struct_time

Pretpostavimo da imamo 9 brojeva koji predstavljaju godinu, mjesec, datum, dan u sedmici i niz drugih vrijednosti i moramo ih spojiti u jedan niz. Za to se koristi funkcija asctime(). Ona prihvata ili spremna struct_time, ili bilo koju drugu torbu od 9 vrijednosti koja predstavlja isto. Nakon toga, vraća se string, koji je datum, vrijeme i niz drugih parametara. 

Vrlo je zgodno koristiti ovu metodu kako bi se različiti korisnički specificirani podaci doveli u jednu varijablu..

Na primjer, to može biti program u kojem korisnik posebno specificira dan, mjesec, godinu, dan u sedmici i druge podatke u vezi registracije za događaj. Nakon toga primljeni podaci se unose u bazu podataka i potom se izdaju drugoj osobi koja ih zatraži.

Dobivanje vremena i datuma na osnovu Python stringa

Pretpostavimo da je korisnik specificirao različite podatke i da ih trebamo kombinovati u jedan red u formatu koji je osoba unela, a zatim napraviti kopiju u drugu varijablu i tamo je ponovo izgraditi u standardni format. Za to se koristi funkcija time.strptime().

Uzima varijablu u kojoj je navedena vrijednost i vraća nam već poznatu struct_time.

Radi jasnoće, napisaćemo takav program.

vrijeme uvoza

time_string = «15. jun, 2019.»

rezultat = time.strptime(vremenski_string, «%d %B, %Y»)

štampa (rezultat)

Pogodite kakav će biti rezultat? Pokušajte pogoditi ne gledajući u krajnji dio. A onda provjerite odgovor.

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)

Jednom riječju, rad s datumima i vremenom u Pythonu uopće nije težak. Dovoljno je slijediti ove upute i sve će uspjeti. Korištenje biblioteke vrijeme korisnik dobija ogroman broj mogućnosti za rad sa vremenom, kao što su:

  1. Obustavite izvršavanje programa na određeno vrijeme.
  2. Pokažite vrijeme koje je prošlo od epohe, u sekundama. Ove informacije se mogu koristiti za sumiranje vremena ili za obavljanje drugih matematičkih operacija na njemu.
  3. Pretvorite u pogodan format. Štaviše, sam programer može podesiti koji će elementi biti prikazani i kojim redoslijedom. 

Postoji i niz drugih mogućnosti, ali danas smo analizirali one najosnovnije. Dobro će doći u gotovo svakom programu koji nekako funkcionira s vremenom. Sretno.

Ostavite odgovor