Laiko modulis Python 3 programoje. Pagrindiniai metodai, šablonai, pavyzdžiai

Beveik bet kuri programa naudoja laiką. „Python“ tam buvo sukurta atskira biblioteka - laikasnaudojamas su juo atlikti įvairius veiksmus. Kad jis veiktų, pirmiausia jis turi būti deklaruotas kodo pradžioje. Ši eilutė naudojama šiam tikslui:

importo laikas

Panagrinėkime įvairias galimybes, kaip teisingai naudoti šį modulį praktikoje. 

Sekundžių skaičiaus nuo epochos nustatymas

Norint atlikti šią užduotį, yra funkcija laikas(), kuriai nereikia jokių parametrų. Jo grįžtamoji reikšmė yra tai, kiek sekundžių praėjo nuo 1 m. sausio 1970 d. Python kalboje šis laikas vadinamas epochos pradžia. Bent jau Unix šeimos operacinėse sistemose.

Kalbant apie „Windows“, data yra ta pati, tačiau gali kilti problemų dėl neigiamų verčių, kurios buvo prieš šią datą. 

Naudojama laiko juosta UTC.

importo laikas

sekundės = laikas.laikas()

spausdinti („Sekundės nuo epochos =“, sekundės)

Šios funkcijos sudėtingumas yra tas, kad ji nerodo tikslios datos, o tik sekundžių skaičių. Norėdami konvertuoti į visiems žinomą formatą, turite naudoti tikslią informaciją. Tam naudojama funkcija laikas.ctime().

Datos, laiko grąžinimas įprastu formatu

Norint grąžinti laiką įprastu formatu, yra būdas laikas.ctime(). Skliausteliuose nurodomas kintamasis arba skaičius, nurodantis, kiek sekundžių praėjo nuo epochos pradžios. Šis metodas grąžina visas datos ir laiko charakteristikas, įskaitant datą, metus, valandų skaičių, minutes, sekundes ir savaitės dieną.

Ši funkcija taip pat gali būti naudojama be argumentų. Tokiu atveju ji grąžina dabartinę datą, laiką ir pan.

Čia yra kodo fragmentas, kuris tai parodo.

importo laikas

spausdinti(time.ctime())

23 m. spalio 10 d., antradienis, 18:23:2018

Paskutinė eilutė yra tai, kas spausdinama konsolėje, kurioje veikia Python interpretatorius. Metodas automatiškai suformatuoja gautą sekundžių skaičių į vartotojui pažįstamą formą. Tiesa, visi aukščiau aprašyti elementai naudojami retai. Paprastai reikia gauti arba tik laiką, arba tik šios dienos datą. Tam naudojama atskira funkcija – strftime (). Tačiau prieš tai apsvarstydami turime išanalizuoti klasę laikas.struct_time.

klasės laikas.struct_time

Tai argumentų kategorija, kurią galima priimti įvairiais metodais. Jame nėra jokių pasirinkimų. Tai rinkinys su pavadinta sąsaja. Paprasčiau tariant, šios klasės elementus galima pasiekti ir pagal pavadinimą, ir pagal indekso numerį.

Jį sudaro šie atributai.Laiko modulis Python 3 programoje. Pagrindiniai metodai, šablonai, pavyzdžiai

Dėmesio! Skirtingai nuo daugelio kitų programavimo kalbų, čia mėnuo gali svyruoti nuo 1 iki 12, o ne nuo nulio iki 11.

Konkretaus formato grąžinimas

Naudojant funkciją strftime() galite gauti metus, mėnesį, dieną, valandą, minutes, sekundes atskirai ir grąžinti juos į teksto eilutę. Tada jis gali būti atspausdintas vartotojui naudojant funkciją spausdinti () ar kitaip apdorotas.

Kaip argumentą funkcija gali priimti bet kurį kintamąjį, kuris įgauna kitų šio modulio funkcijų grąžintą reikšmę. Pavyzdžiui, į jį galite perkelti vietinį laiką (apie tai bus aptarta vėliau), iš kurio jis ištrauks reikiamus duomenis.

Čia yra kodo fragmentas, kuriame tai darome.

importo laikas

named_tuple = laikas.localtime() # gauti struct_time

laiko_eilutė = laikas.strftime(«%m/%d/%Y, %H:%M:%S», pavadintas_eilutė)

spausdinti(laiko_eilutė)

Jei paleisite šį kodą, bus rodoma dabartinė data ir laikas. Galima keisti elementų formatą ir seką. Jie yra tokie:

  1. %Y yra metai.
  2. %m yra mėnuo.
  3. %d – diena.
  4. %H – laikas.
  5. %M – minutės.
  6. %S – antra.

Atitinkamai, galite padaryti taip, kad išvestis būtų tik mėnesio ir dienos. Norėdami tai padaryti, jums tiesiog nereikia duoti komandos rodyti metus. Tai yra, aukščiau esančioje formulėje parašykite kaip argumentą %m/%d, ir viskas. Arba atvirkščiai, %d/%m. 

Tiesą sakant, eilučių literalų skaičius yra daug didesnis. Čia yra lentelė, kurioje jie išsamiai aprašyti.Laiko modulis Python 3 programoje. Pagrindiniai metodai, šablonai, pavyzdžiai

Atidėkite giją tam tikram sekundžių skaičiui

Tam naudojama funkcija miegoti (). Gana didelis programavimo užduočių blokas yra susijęs su laiko bėgimu. Kartais kitą žingsnį tenka atidėti tam tikram laikui. Pavyzdžiui, jei reikia sąveikauti su duomenų baze, kurios apdorojimas užtrunka tam tikrą laiką.

Kaip argumentą metodas naudoja reikšmę, kuri išreiškia sekundžių skaičių, per kurį atidedamas kitas algoritmo veiksmas.

Pavyzdžiui, šiame fragmente delsa yra 10 sekundžių.

importo laikas

pauzė = 10

spausdinti („Programa pradėta...“)

laikas.miegas (pauzė)

print(str(pause) + » praėjo sekundės.»)

Dėl to gausime štai ką:

Programa pradėta…

Praėjo 10 sekundžių.

Kaip matome iš išvesties, programa pirmiausia praneša, kad ji prasidėjo. Ir po dešimties sekundžių ji parašė, kad šis laikas praėjo.

Funkcija leidžia nurodyti pauzės trukmę milisekundėmis. Norėdami tai padaryti, naudojame funkcijos argumento trupmenines reikšmes miegoti. Pavyzdžiui, 0,1. Tai reiškia, kad delsa bus 100 milisekundžių.

Gaukite vietos laiką

Naudodama funkciją localtime(), programa gauna sekundžių skaičių nuo epochos pradžios tam tikroje laiko juostoje. 

Aiškumo dėlei pateiksime kodo pavyzdį.

importo laikas

rezultatas = time.localtime(1575721830)

spausdinti („rezultatas:“, rezultatas)

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

print(«tm_valanda:», rezultatas.tm_valanda)

Grąžina struct_time UTC, atsižvelgiant į sekundžių skaičių nuo epochos

Ši užduotis pasiekiama naudojant time.gmtime(). metodas. Bus aiškiau, jei pateiksime pavyzdį.

importo laikas

rezultatas = time.gmtime(1575721830)

spausdinti („rezultatas:“, rezultatas)

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

print(«tm_valanda:», rezultatas.tm_valanda)

Jei įjungsite šią veiksmų seką, bus rodomas su laiku, metais ir laiko juosta susijusių elementų rinkinys.

Grąžinti sekundžių skaičių nuo epochos pradžios automatiškai konvertuojant į vietos laiką

Jei susiduriate su tokia užduotimi, ji įgyvendinama naudojant metodą mktime (), kurio reikia struct_time. Po to jis atlieka atvirkštinį funkcijos veiksmą vietinis laikas(). Tai yra, jis konvertuoja laiką pagal vietinę laiko juostą į sekundžių skaičių, praėjusį nuo epochos pradžios, pakoreguotą pagal laiko juostą.

Funkcijos mktime() ir localtime() yra glaudžiai susijusios. Šis kodo fragmentas tai aiškiai parodo. Pažvelkime į jį, kad suprastume, kaip tai veikia. 

importo laikas

sekundės = 1575721830

# grąžina struct_time

t = laikas.vietos laikas (sekundėmis)

spausdinti(«t1: «, t)

# grąžina sekundes iš struct_time

s = laikas.mktime(t)

spausdinti («ns:», sekundės)

Matome, kad kintamasis sekundžių nuo epochos buvo priskirta 1575721830 sekundžių. Pirma, programa gauna tikslią datą, laiką ir kitus parametrus, remdamasi šia reikšme, įdėkite ją į kintamąjį t, o tada paverčia jo turinį į kintamąjį s.

Po to paleidžiama nauja eilutė ir rodomas sekundžių skaičius konsolėje. Galite patikrinti, ar tai bus tas pats numeris, kuris buvo priskirtas sekundžių kintamajam.

Išvesties data iš 9 skaičių, kurie nurodo struct_time

Tarkime, kad turime 9 skaičius, žyminčius metus, mėnesį, datą, savaitės dieną ir daugybę kitų reikšmių, ir turime juos sujungti į vieną eilutę. Tam naudojama funkcija asctime(). Ji priima arba pasiruošusi struct_time, arba bet kuri kita 9 verčių eilė, kuri reiškia tą patį. Po to grąžinama eilutė, kuri yra data, laikas ir daugybė kitų parametrų. 

Labai patogu naudoti šį metodą, norint sujungti skirtingus vartotojo nurodytus duomenis į vieną kintamąjį..

Pavyzdžiui, tai gali būti programa, kurioje vartotojas atskirai nurodo dieną, mėnesį, metus, savaitės dieną ir kitus duomenis, susijusius su registracija į renginį. Po to gauta informacija įvedama į duomenų bazę ir išduodama kitam jos paprašančiam asmeniui.

Laiko ir datos gavimas pagal Python eilutę

Tarkime, kad vartotojas nurodė skirtingus duomenis, ir mes turime juos sujungti į vieną eilutę tokiu formatu, kurį įvedė asmuo, tada padaryti kopiją į kitą kintamąjį ir perdaryti jį į standartinį formatą. Tam naudojama funkcija time.strptime().

Jis paima kintamąjį, kuriame nurodyta ši reikšmė, ir grąžina mums jau pažįstamą struct_time.

Aiškumo dėlei parašysime tokią programą.

importo laikas

time_string = «15 m. birželio 2019 d.»

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

spausdinti (rezultatas)

Spėkite, kokia bus produkcija? Pabandykite atspėti nežiūrėdami į apatinę eilutę. Ir tada patikrinkite atsakymą.

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)

Žodžiu, dirbti su datomis ir laiku Python programoje visai nesunku. Pakanka laikytis šių nurodymų, ir viskas susitvarkys. Naudojimasis biblioteka laikas vartotojas gauna daugybę galimybių dirbti su laiku, pavyzdžiui:

  1. Sustabdyti programos vykdymą tam tikram laikui.
  2. Rodyti laiką, praėjusį nuo epochos, sekundėmis. Šią informaciją galima panaudoti laikui sumuoti arba atlikti kitas matematines operacijas.
  3. Konvertuoti į patogų formatą. Be to, pats programuotojas gali nustatyti, kurie elementai ir kokia seka bus rodomi. 

Taip pat yra nemažai kitų galimybių, tačiau šiandien išanalizavome pačias paprasčiausias. Jie pravers beveik bet kurioje programoje, kuri kažkaip veikia su laiku. Sėkmės.

Palikti atsakymą