Modulul de timp în Python 3. Principalele metode, șabloane, exemple

Aproape orice program folosește timpul. În Python, a fost dezvoltată o bibliotecă separată pentru aceasta - timpfolosit pentru a efectua o varietate de acțiuni cu acesta. Pentru ca acesta să funcționeze, trebuie mai întâi declarat la începutul codului. Această linie este folosită pentru aceasta:

timp de import

Să luăm în considerare diferite opțiuni privind utilizarea corectă a acestui modul în practică. 

Determinarea numărului de secunde de la epocă

Pentru a îndeplini această sarcină, există o funcție timp() care nu ia parametri. Valoarea sa returnată este câte secunde au trecut de la 1 ianuarie 1970. În Python, această dată este numită începutul unei epoci. Cel puțin în sistemele de operare din familia Unix.

În ceea ce privește Windows, data este aceeași, dar pot apărea probleme cu valorile negative care au fost înainte de această dată. 

Fusul orar utilizat este UTC.

timp de import

secunde = timp.timp()

print(„Secunde de la epoca =”, secunde)

Complexitatea acestei funcții este că nu afișează exact data, ci doar numărul de secunde. Pentru a converti în formatul familiar tuturor, trebuie să utilizați informații exacte. Pentru aceasta se folosește funcția timp.ctime().

Revenirea datei, orei în formatul obișnuit

Pentru a returna ora în formatul obișnuit, există o metodă timp.ctime(). Parantezele indică o variabilă sau un număr care indică numărul de secunde care au trecut de la începutul epocii. Această metodă returnează toate caracteristicile datei și orei, inclusiv data, anul, numărul de ore, minutele, secundele și ziua săptămânii.

Această funcție poate fi folosită și fără argumente. În acest caz, returnează data curentă, ora și așa mai departe.

Iată un fragment de cod care demonstrează acest lucru.

timp de import

print(time.ctime())

Marți, 23 octombrie 10:18:23 2018

Ultima linie este ceea ce este imprimat pe consola unde rulează interpretul Python. Metoda formatează automat numărul de secunde primit într-o formă familiară utilizatorului. Adevărat, toate elementele descrise mai sus sunt rareori folosite. De regulă, trebuie să obțineți fie doar ora, fie doar data de astăzi. Pentru aceasta, se folosește o funcție separată - strftime(). Dar înainte de a ne gândi, trebuie să analizăm clasa timp.struct_time.

ora clasei.struct_time

Aceasta este o categorie de argumente care poate fi acceptată printr-o serie de metode. Nu are opțiuni. Este un tuplu cu o interfață numită. Mai simplu spus, elementele acestei clase pot fi accesate atât după nume, cât și după numărul de index.

Este format din următoarele atribute.Modulul de timp în Python 3. Principalele metode, șabloane, exemple

Atenţie! Spre deosebire de o serie de alte limbaje de programare, aici luna poate varia de la 1 la 12, și nu de la zero la 11.

Returnarea unui format specific

Folosind funcția strftime() puteți obține individual anul, luna, ziua, ora, minutele, secundele și le puteți returna într-un șir de text. Apoi poate fi imprimat utilizatorului folosind funcția imprimare () sau prelucrate în alt mod.

Ca argument, o funcție poate lua orice variabilă care ia o valoare returnată de alte funcții ale acestui modul. De exemplu, îi puteți transfera ora locală (se va discuta mai târziu), din care va scoate datele necesare.

Iată fragmentul de cod unde o facem.

timp de import

named_tuple = time.localtime() # obține struct_time

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

print(time_string)

Dacă rulați acest cod, vor fi afișate data și ora curente. Formatul și secvența elementelor pot fi modificate. Acestea sunt după cum urmează:

  1. %Y este anul.
  2. %m este luna.
  3. %d – zi.
  4. %H – timp.
  5. %M – minute.
  6. %S – secundă.

În consecință, puteți face astfel încât ieșirea să fie exclusiv a lunii și a zilei. Pentru a face acest lucru, pur și simplu nu trebuie să dați o comandă pentru a afișa anul. Adică, scrieți în formula de mai sus ca argument %m/%d și atât. Sau invers, %d/%m. 

De fapt, numărul de literali șir este mult mai mare. Iată un tabel în care sunt descrise în detaliu.Modulul de timp în Python 3. Principalele metode, șabloane, exemple

Amânați un thread pentru un anumit număr de secunde

Pentru aceasta se folosește funcția dormi (). Un bloc destul de mare de sarcini de programare este asociat cu trecerea timpului. Uneori trebuie să amâni următorul pas pentru un anumit timp. De exemplu, dacă trebuie să interacționați cu o bază de date care necesită o anumită perioadă de timp pentru procesare.

Ca argument, metoda folosește o valoare care exprimă numărul de secunde pentru a întârzia următorul pas din algoritm.

De exemplu, în acest fragment, întârzierea este de 10 secunde.

timp de import

pauză = 10

print(«Programul a început...»)

timp.somn (pauza)

print(str(pauză) + » secunde trecute.»)

Ca urmare, vom obține asta:

Programul a început...

Au trecut 10 secunde.

După cum putem vedea din rezultat, programul raportează mai întâi că a pornit. Și după zece secunde, ea a scris că acest timp a trecut.

Funcția vă permite să specificați durata pauzei în milisecunde. Pentru a face acest lucru, folosim valori fracționale ale argumentului funcției dormi. De exemplu, 0,1. Aceasta înseamnă că întârzierea va fi de 100 de milisecunde.

Obțineți ora locală

Folosind funcția localtime(), programul obține numărul de secunde de la începutul epocii într-un anumit fus orar. 

Să dăm un exemplu de cod pentru claritate.

timp de import

rezultat = time.localtime(1575721830)

print(„rezultat:”, rezultat)

print(«nгод:», rezultat.tm_year)

print(«tm_hour:», rezultat.tm_hour)

Returnează struct_time în UTC pe baza numărului de secunde de la epocă

Această sarcină este realizată folosind time.gmtime(). metodă. Va fi mai clar dacă dăm un exemplu.

timp de import

rezultat = time.gmtime(1575721830)

print(„rezultat:”, rezultat)

print(«nгод:», rezultat.tm_year)

print(«tm_hour:», rezultat.tm_hour)

Dacă activați această secvență de acțiuni, atunci va fi afișat un set de elemente legate de oră, an și fus orar.

Returnează numărul de secunde de la începutul epocii cu conversie automată la ora locală

Dacă vă confruntați cu o astfel de sarcină, aceasta este implementată folosind metoda mktime(), care ia struct_time. După aceea, efectuează acțiunea inversă a funcției ora locala(). Adică convertește ora în funcție de fusul orar local în numărul de secunde care au trecut de la începutul epocii, ajustat pentru fusul orar.

Funcțiile mktime() și localtime() sunt strâns legate între ele. Acest fragment de cod demonstrează clar acest lucru. Să-l aruncăm o privire pentru a înțelege mai profund cum funcționează. 

timp de import

secunde = 1575721830

# returnează struct_time

t = time.localtime(secunde)

print(«t1: «, t)

# returnează secunde de la struct_time

s = timp.mktime(t)

print(«ns:», secunde)

Vedem că variabila secunde i s-au alocat 1575721830 de secunde de la epocă. În primul rând, programul primește data exactă, ora și alți parametri, pe baza acestei valori, puneți-o într-o variabilă t, iar apoi își convertește conținutul într-o variabilă s.

După aceea, bate o nouă linie și afișează numărul de secunde în consolă. Puteți verifica dacă va fi același număr care a fost atribuit variabilei secunde.

Data de ieșire din 9 numere care se referă la struct_time

Să presupunem că avem 9 numere reprezentând anul, luna, data, ziua săptămânii și o serie de alte valori și trebuie să le combinăm într-un singur șir. Pentru aceasta se folosește funcția asctime(). Ea acceptă sau gata struct_time, sau orice alt tuplu de 9 valori care reprezintă același lucru. După aceea, este returnat un șir, care este o dată, ora și o serie de alți parametri. 

Este foarte convenabil să utilizați această metodă pentru a aduce date disparate specificate de utilizator într-o singură variabilă..

De exemplu, poate fi un program în care utilizatorul specifică separat ziua, luna, anul, ziua săptămânii și alte date referitoare la înregistrarea la un eveniment. După aceea, informațiile primite sunt introduse în baza de date și apoi eliberate altei persoane care le solicită.

Obținerea orei și datei pe baza șirului Python

Să presupunem că utilizatorul a specificat date disparate și trebuie să le combinăm într-o singură linie în formatul introdus de persoana, apoi să facem o copie într-o altă variabilă și să o reconstruim într-un format standard acolo. Pentru aceasta se folosește funcția timp.strptime().

Este nevoie de o variabilă în care este specificată această valoare și ne returnează cea deja familiară struct_time.

Pentru claritate, vom scrie un astfel de program.

timp de import

time_string = «15 iunie 2019»

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

imprimare (rezultat)

Ghici care va fi rezultatul? Încercați să ghiciți fără să vă uitați la linia de jos. Și apoi verifică răspunsul.

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)

Într-un cuvânt, lucrul cu datele și orele în Python nu este deloc dificil. Este suficient să urmați aceste instrucțiuni și totul va funcționa. Utilizarea Bibliotecii timp utilizatorul primește un număr mare de oportunități de lucru cu timpul, cum ar fi:

  1. Suspendați execuția programului pentru o anumită perioadă de timp.
  2. Arată timpul care a trecut de la epocă, în secunde. Aceste informații pot fi folosite pentru a însuma timpul sau pentru a efectua alte operații matematice asupra acestuia.
  3. Convertiți într-un format convenabil. Mai mult, programatorul însuși poate seta ce elemente vor fi afișate și în ce secvență. 

Există și o serie de alte posibilități, dar astăzi le-am analizat pe cele mai elementare. Acestea vor fi utile în aproape orice program care funcționează cumva cu timpul. Mult noroc.

Lasă un comentariu