Tydmodule in Python 3. Hoofmetodes, sjablone, voorbeelde

Byna enige program gebruik tyd. In Python is 'n aparte biblioteek hiervoor ontwikkel - tydgebruik om 'n verskeidenheid handelinge daarmee uit te voer. Om dit te laat werk, moet dit eers aan die begin van die kode verklaar word. Hierdie lyn word hiervoor gebruik:

invoertyd

Kom ons kyk na verskillende opsies oor hoe om hierdie module korrek in die praktyk te gebruik. 

Bepaal die aantal sekondes sedert die epog

Om hierdie taak uit te voer, is daar 'n funksie tyd() wat geen parameters neem nie. Die terugkeerwaarde daarvan is hoeveel sekondes verloop het sedert 1 Januarie 1970. In Python word hierdie tyd die begin van 'n epog genoem. Ten minste in bedryfstelsels van die Unix-familie.

Wat Windows betref, is die datum dieselfde, maar daar kan probleme wees met negatiewe waardes wat voor hierdie datum was. 

Die tydsone wat gebruik word, is UTC.

invoertyd

sekondes = tyd.tyd()

print(“Sekondes sedert epog =”, sekondes)

Die kompleksiteit van hierdie funksie is dat dit nie presies die datum vertoon nie, maar slegs die aantal sekondes. Om te skakel na die formaat wat vir almal bekend is, moet jy akkurate inligting gebruik. Hiervoor word die funksie gebruik time.ctime().

Gee die datum en tyd in die gewone formaat terug

Om die tyd in die gewone formaat terug te gee, is daar 'n metode time.ctime(). Die hakies dui 'n veranderlike of 'n getal aan wat die aantal sekondes aandui wat verloop het sedert die begin van die epog. Hierdie metode gee alle datum- en tydkenmerke terug, insluitend die datum, jaar, aantal ure, minute, sekondes en dag van die week.

Hierdie funksie kan ook sonder argumente gebruik word. In hierdie geval gee dit die huidige datum, tyd, ensovoorts.

Hier is 'n kodebrokkie wat dit demonstreer.

invoertyd

print(time.ctime())

Di 23 Okt 10:18:23 2018

Die laaste reël is wat op die konsole gedruk word waar die Python-tolk loop. Die metode formateer outomaties die aantal sekondes wat ontvang is in 'n gebruiker-bekende vorm. Dit is waar, al die elemente wat hierbo beskryf word, word selde gebruik. As 'n reël moet jy óf net die tyd óf net vandag se datum kry. Hiervoor word 'n aparte funksie gebruik - strftime(). Maar voordat ons dit oorweeg, moet ons die klas ontleed tyd.struktuurtyd.

klastyd.struktuurtyd

Dit is 'n kategorie van argumente wat deur 'n reeks metodes aanvaar kan word. Dit het geen opsies nie. Dit is 'n tuple met 'n benoemde koppelvlak. Eenvoudig gestel, die elemente van hierdie klas kan verkry word deur beide die naam en deur die indeksnommer.

Dit bestaan ​​uit die volgende eienskappe.Tydmodule in Python 3. Hoofmetodes, sjablone, voorbeelde

Aandag! Anders as 'n aantal ander programmeertale, kan die maand hier van 1 tot 12 wissel, en nie van nul tot 11 nie.

Gee 'n spesifieke formaat terug

Gebruik die funksie strftime() jy kan die jaar, maand, dag, uur, minute, sekondes individueel kry en dit na 'n teksstring terugstuur. Dan kan dit aan die gebruiker gedruk word deur die funksie te gebruik druk () of andersins verwerk.

As 'n argument kan 'n funksie enige veranderlike neem wat 'n waarde neem wat deur ander funksies van hierdie module teruggestuur word. Byvoorbeeld, jy kan die plaaslike tyd na dit oordra (dit sal later bespreek word), waaruit dit die nodige data sal haal.

Hier is die kodebrokkie waar ons dit doen.

invoertyd

named_tuple = time.localtime() # kry struct_time

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

druk (tydstring)

As jy hierdie kode gebruik, sal die huidige datum en tyd vertoon word. Die formaat en volgorde van elemente kan verander word. Hulle is soos volg:

  1. %Y is die jaar.
  2. %m is die maand.
  3. %d – dag.
  4. %H – tyd.
  5. %M – minute.
  6. %S – tweede.

Gevolglik kan u dit so maak dat die uitset uitsluitlik van die maand en dag is. Om dit te doen, hoef jy eenvoudig nie 'n opdrag te gee om die jaar te vertoon nie. Dit wil sê, skryf in die formule hierbo as 'n argument %m/%d, en dit is dit. Of andersom, %d/%m. 

Trouens, die aantal letterlike stringe is baie groter. Hier is 'n tabel waar hulle in detail beskryf word.Tydmodule in Python 3. Hoofmetodes, sjablone, voorbeelde

Stel 'n draad vir 'n sekere aantal sekondes uit

Hiervoor word die funksie gebruik slaap (). ’n Redelike groot blok programmeringstake word geassosieer met die verloop van tyd. Soms moet jy die volgende stap vir 'n sekere tyd uitstel. Byvoorbeeld, as jy interaksie moet hê met 'n databasis wat 'n sekere hoeveelheid tyd neem om te verwerk.

As 'n argument gebruik die metode 'n waarde wat die aantal sekondes uitdruk om die volgende stap vanaf die algoritme te vertraag.

Byvoorbeeld, in hierdie brokkie is die vertraging 10 sekondes.

invoertyd

pouse = 10

druk («Program begin...»)

tyd.slaap (pouse)

print(str(pouse) + » sekondes verby.»)

As gevolg hiervan sal ons dit kry:

Program het begin...

10 sekondes het verbygegaan.

Soos ons uit die uitset kan sien, meld die program eers dat dit begin het. En ná tien sekondes het sy geskryf dat hierdie tyd verby is.

Die funksie laat jou toe om die duur van die pouse in millisekondes te spesifiseer. Om dit te doen, gebruik ons ​​breukwaardes van die funksie-argument slaap. Byvoorbeeld, 0,1. Dit beteken dat die vertraging 100 millisekondes sal wees.

Kry plaaslike tyd

Deur die localtime()-funksie te gebruik, kry die program die aantal sekondes sedert die begin van die epog in 'n spesifieke tydsone. 

Kom ons gee 'n voorbeeldkode vir duidelikheid.

invoertyd

resultaat = time.localtime(1575721830)

druk ("resultaat:", resultaat)

druk («nгод:», resultaat.tm_jaar)

print(«tm_hour:», resultaat.tm_hour)

Wys struct_time in UTC gebaseer op aantal sekondes sedert epog

Hierdie taak word bereik met behulp van die time.gmtime(). metode. Dit sal duideliker wees as ons 'n voorbeeld gee.

invoertyd

resultaat = time.gmtime(1575721830)

druk ("resultaat:", resultaat)

druk («nгод:», resultaat.tm_jaar)

print(«tm_hour:», resultaat.tm_hour)

As jy hierdie volgorde van aksies aanskakel, sal 'n stel elemente wat verband hou met tyd, jaar en tydsone vertoon word.

Gee die aantal sekondes sedert die begin van die epog terug met outomatiese omskakeling na plaaslike tyd

As jy voor so 'n taak te staan ​​kom, word dit met behulp van die metode geïmplementeer mktime(), wat neem struktuurtyd. Daarna voer dit die omgekeerde aksie van die funksie uit plaaslike tyd(). Dit wil sê, dit skakel die tyd om volgens die plaaslike tydsone in die aantal sekondes wat verloop het sedert die begin van die epog, aangepas vir die tydsone.

Die mktime() en localtime() funksies is nou verweef. Hierdie kodebrokkie demonstreer dit duidelik. Kom ons kyk daarna om dieper te verstaan ​​hoe dit werk. 

invoertyd

sekondes = 1575721830

# gee struct_time terug

t = tyd.plaaslike tyd(sekondes)

druk («t1: «, t)

# gee sekondes terug vanaf struct_time

s = tyd.mktyd(t)

druk(«ns:», sekondes)

Ons sien dat die veranderlike sekondes is sedert die tydperk 1575721830 sekondes toegeken. Eerstens kry die program die presiese datum, tyd en ander parameters, gebaseer op hierdie waarde, plaas dit in 'n veranderlike t, en sit dan die inhoud daarvan om in 'n veranderlike s.

Daarna slaan 'n nuwe lyn af en vertoon die aantal sekondes in die konsole. Jy kan seker maak dat dit dieselfde nommer sal wees wat aan die sekondes veranderlike toegeken is.

Uitvoerdatum vanaf 9 getalle wat na struct_time verwys

Gestel ons het 9 getalle wat die jaar, maand, datum, dag van die week en 'n aantal ander waardes verteenwoordig, en ons moet hulle in een string kombineer. Hiervoor word die funksie gebruik asctime(). Sy aanvaar of gereed struktuurtyd, of enige ander tupel van 9 waardes wat vir dieselfde staan. Daarna word 'n string teruggestuur, wat 'n datum, tyd en 'n aantal ander parameters is. 

Dit is baie gerieflik om hierdie metode te gebruik om uiteenlopende gebruiker-gespesifiseerde data in 'n enkele veranderlike te bring..

Dit kan byvoorbeeld 'n program wees waar die gebruiker die dag, maand, jaar, dag van die week en ander data met betrekking tot registrasie vir 'n gebeurtenis afsonderlik spesifiseer. Daarna word die inligting wat ontvang word in die databasis ingevoer en dan uitgereik aan 'n ander persoon wat dit versoek.

Kry tyd en datum gebaseer op Python-string

Gestel die gebruiker het uiteenlopende data gespesifiseer, en ons moet dit in een reël kombineer in die formaat wat die persoon ingevoer het, en dan 'n kopie maak na 'n ander veranderlike, en dit in 'n standaardformaat daar opbou. Hiervoor word die funksie gebruik time.strptime().

Dit neem 'n veranderlike waarin hierdie waarde gespesifiseer is, en gee die reeds bekende aan ons terug struktuurtyd.

Vir duidelikheid sal ons so 'n program skryf.

invoertyd

tydstring = «15 Junie, 2019»

resultaat = tyd.strptime(tyd_string, «%d %B, %Y»)

druk (resultaat)

Raai wat die uitset sal wees? Probeer raai sonder om na die onderste lyn te kyk. En kyk dan na die antwoord.

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

In 'n woord, dit is glad nie moeilik om met datums en tye in Python te werk nie. Dit is genoeg om hierdie instruksies te volg, en alles sal uitwerk. Gebruik die Biblioteek tyd die gebruiker kry 'n groot aantal geleenthede om met tyd te werk, soos:

  1. Stop die uitvoering van die program vir 'n bepaalde tyd.
  2. Toon die tyd wat verloop het sedert die epog, in sekondes. Hierdie inligting kan gebruik word om tyd op te som of ander wiskundige bewerkings daarop uit te voer.
  3. Skakel oor na 'n gerieflike formaat. Boonop kan die programmeerder self bepaal watter elemente vertoon sal word en in watter volgorde. 

Daar is ook 'n aantal ander moontlikhede, maar vandag het ons die mees basiese ontleed. Hulle sal handig te pas kom in byna enige program wat op een of ander manier met tyd werk. Sterkte.

Lewer Kommentaar