Modul vremena u Python 3. Glavne metode, predlošci, primjeri

Gotovo svaki program koristi vrijeme. U Pythonu je za to razvijena zasebna biblioteka – vrijemekoristi se za obavljanje raznih radnji s njim. Da bi funkcionirao, 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

Da bi se izvršio ovaj zadatak, postoji funkcija vrijeme() koji ne uzima parametre. Njegova vraćena vrijednost je koliko je sekundi prošlo od 1. siječnja 1970. U Pythonu se ovo vrijeme naziva početak epohe. Barem u operativnim sustavima obitelji Unix.

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

Korištena vremenska zona je UTC.

vrijeme uvoza

sekunde = vrijeme.vrijeme()

print(“Sekunde od epohe =”, sekunde)

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

Vraćanje datuma, vremena u uobičajenom formatu

Za vraćanje vremena u uobičajenom formatu postoji metoda vrijeme.cvrijeme(). Zagrade označavaju varijablu ili broj koji označava broj sekundi koje su prošle 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 tjednu.

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

Ovdje je isječak koda koji to pokazuje.

vrijeme uvoza

ispis(vrijeme.cvrijeme())

Uto, 23. listopada 10:18:23 2018

Posljednji red je ono što se ispisuje na konzoli na kojoj se izvodi Python interpreter. Metoda automatski formatira primljeni broj sekundi u oblik koji je poznat korisniku. Istina, svi gore opisani elementi rijetko se koriste. U 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 vrijeme.struk_vrijeme.

vrijeme nastave.struct_time

Ovo je kategorija argumenata koji se mogu prihvatiti nizom metoda. Nema nikakvih opcija. To je tuple s imenovanim sučeljem. 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, predlošci, primjeri

Pažnja! Za razliku od brojnih drugih programskih jezika, ovdje mjesec može biti u rasponu od 1 do 12, a ne od nula 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 ispis () ili na drugi način obrađeni.

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

Ovdje je isječak koda gdje to radimo.

vrijeme uvoza

named_tuple = time.localtime() # get struct_time

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

ispis(vremenski_string)

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

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

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

Zapravo, broj string literala mnogo je veći. Evo tablice gdje su oni detaljno opisani.Modul vremena u Python 3. Glavne metode, predlošci, primjeri

Odgodite nit na određeni broj sekundi

Za to se koristi funkcija spavati (). Prilično velik blok programskih zadataka povezan je s protokom vremena. Ponekad morate odgoditi sljedeći korak na određeno vrijeme. Na primjer, ako trebate komunicirati s bazom podataka čija obrada zahtijeva određeno vrijeme.

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

Na primjer, u ovom isječku, odgoda je 10 sekundi.

vrijeme uvoza

pauza = 10

print("Program je započeo...")

time.sleep(pauza)

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

Kao rezultat, dobit ćemo ovo:

Program je započeo…

Prošlo je 10 sekundi.

Kao što vidimo iz izlaza, program prvo javlja da je pokrenut. I nakon desetak sekundi napisala je da je to vrijeme prošlo.

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

Dobijte lokalno vrijeme

Pomoću funkcije localtime() program dobiva broj sekundi od početka epohe u određenoj vremenskoj zoni. 

Navedimo primjer koda radi jasnoće.

vrijeme uvoza

rezultat = vrijeme.localtime(1575721830)

ispis(“rezultat:”, rezultat)

ispis(«ngod:», rezultat.tm_godina)

ispis(«tm_hour:», rezultat.tm_hour)

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

Ovaj zadatak se postiže pomoću time.gmtime(). metoda. Bit će jasnije ako navedemo primjer.

vrijeme uvoza

rezultat = vrijeme.gmvrijeme(1575721830)

ispis(“rezultat:”, rezultat)

ispis(«ngod:», rezultat.tm_godina)

ispis(«tm_hour:», rezultat.tm_hour)

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

Vratite broj sekundi od početka epohe s automatskom pretvorbom u lokalno vrijeme

Ako ste suočeni s takvim zadatkom, on se provodi pomoću metode mktime(), koja traje vrijeme_strukture. Nakon toga izvodi radnju obrnutu od funkcije lokalno vrijeme(). To jest, pretvara vrijeme prema lokalnoj vremenskoj zoni u broj sekundi koji je prošao od početka epohe, prilagođen vremenskoj zoni.

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

vrijeme uvoza

sekundi = 1575721830

# vraća struct_time

t = vrijeme.lokalnovrijeme(sekunde)

ispis(«t1: «, t)

# vraća sekunde iz struct_time

s = vrijeme.mkvrijeme(t)

ispis(«ns:», sekunde)

Vidimo da varijabla sekundi je dodijeljeno 1575721830 sekundi od epohe. Prvo, program dobiva točan datum, vrijeme i druge parametre, na temelju te vrijednosti stavlja je u varijablu t, a zatim pretvara njegov sadržaj u varijablu s.

Nakon toga otkucava novi redak i prikazuje broj sekundi u konzoli. Možete provjeriti hoće li to biti isti broj koji je dodijeljen varijabli sekundi.

Izlazni datum iz 9 brojeva koji se odnose na struct_time

Pretpostavimo da imamo 9 brojeva koji predstavljaju godinu, mjesec, datum, dan u tjednu i niz drugih vrijednosti i trebamo ih kombinirati u jedan niz. Za to se koristi funkcija asctime(). Ona prihvaća ili spremna struct_time, ili bilo koju drugu torku od 9 vrijednosti koja označava isto. Nakon toga se vraća niz, koji je datum, vrijeme i niz drugih parametara. 

Vrlo je prikladno 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 navodi dan, mjesec, godinu, dan u tjednu i druge podatke vezane uz prijavu na događaj. Nakon toga se dobiveni podatak unosi u bazu podataka i potom izdaje drugoj osobi koja ga zatraži.

Dobivanje vremena i datuma na temelju Python niza

Pretpostavimo da je korisnik naveo različite podatke i trebamo ih kombinirati u jedan redak u formatu koji je osoba unijela, a zatim napraviti kopiju u drugu varijablu i tamo je ponovno izgraditi u standardni format. Za to se koristi funkcija vrijeme.strpvrijeme().

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

Radi jasnoće, napisat ćemo takav program.

vrijeme uvoza

time_string = «15. lipnja 2019.»

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

ispis (rezultat)

Pogodite kakav će biti rezultat? Pokušajte pogoditi bez gledanja u kraj. A zatim 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 vremenima u Pythonu uopće nije težak. Dovoljno je slijediti ove upute i sve će uspjeti. Korištenje knjižnice vrijeme korisnik dobiva veliki broj mogućnosti za rad s vremenom, kao što su:

  1. Obustavite izvršavanje programa na određeno vrijeme.
  2. Prikažite vrijeme koje je proteklo od epohe, u sekundama. Te se informacije mogu koristiti za zbrajanje vremena ili izvođenje drugih matematičkih operacija na njemu.
  3. Pretvorite u prikladan format. Štoviše, sam programer može postaviti koji će elementi biti prikazani i kojim redoslijedom. 

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

Ostavi odgovor