Laika modulis Python 3. Galvenās metodes, veidnes, piemēri

Gandrīz jebkura programma izmanto laiku. Python šim nolūkam ir izveidota atsevišķa bibliotēka - laiksizmanto, lai ar to veiktu dažādas darbības. Lai tas darbotos, tas vispirms ir jādeklarē koda sākumā. Šī rinda tiek izmantota šim nolūkam:

importa laiks

Apsvērsim dažādas iespējas, kā šo moduli pareizi lietot praksē. 

Sekunžu skaita noteikšana kopš laikmeta

Lai veiktu šo uzdevumu, ir funkcija laiks(), kas neprasa parametrus. Tā atgriešanās vērtība ir, cik sekundes ir pagājušas kopš 1. gada 1970. janvāra. Python valodā šo laiku sauc par laikmeta sākumu. Vismaz Unix saimes operētājsistēmās.

Kas attiecas uz Windows, datums ir vienāds, taču var rasties problēmas ar negatīvām vērtībām, kas bija pirms šī datuma. 

Izmantotā laika josla ir UTC.

importa laiks

sekundes = laiks.laiks()

drukāt ("Sekundes kopš laikmeta =", sekundes)

Šīs funkcijas sarežģītība ir tāda, ka tā neparāda precīzu datumu, bet tikai sekunžu skaitu. Lai konvertētu uz visiem zināmo formātu, jums ir jāizmanto precīza informācija. Šim nolūkam tiek izmantota funkcija laiks.ctime().

Datuma, laika atgriešana parastajā formātā

Lai atgrieztu laiku parastajā formātā, ir metode laiks.ctime(). Iekavās ir norādīts mainīgais vai skaitlis, kas norāda sekunžu skaitu, kas pagājušas kopš laikmeta sākuma. Šī metode atgriež visus datuma un laika raksturlielumus, tostarp datumu, gadu, stundu skaitu, minūtes, sekundes un nedēļas dienu.

Šo funkciju var izmantot arī bez argumentiem. Šajā gadījumā tas atgriež pašreizējo datumu, laiku un tā tālāk.

Šeit ir koda fragments, kas to parāda.

importa laiks

drukāt(time.ctime())

Otrdiena, 23. oktobris, 10:18:23, 2018

Pēdējā rindiņa ir tas, kas tiek izdrukāts konsolē, kurā darbojas Python tulks. Metode automātiski formatē saņemto sekunžu skaitu lietotājam pazīstamā formā. Tiesa, visi iepriekš aprakstītie elementi tiek izmantoti reti. Parasti jums ir jāiegūst vai nu tikai laiks, vai tikai šodienas datums. Šim nolūkam tiek izmantota atsevišķa funkcija - strftime (). Bet pirms mēs to apsveram, mums ir jāparsē klase time.struct_time.

klases laiks.struct_time

Šī ir argumentu kategorija, ko var pieņemt ar dažādām metodēm. Tam nav nekādu iespēju. Tas ir kortežs ar nosauktu interfeisu. Vienkārši sakot, šīs klases elementiem var piekļūt gan pēc nosaukuma, gan pēc indeksa numura.

Tas sastāv no šādiem atribūtiem.Laika modulis Python 3. Galvenās metodes, veidnes, piemēri

Uzmanību! Atšķirībā no vairākām citām programmēšanas valodām, šeit mēnesis var svārstīties no 1 līdz 12, nevis no nulles līdz 11.

Noteikta formāta atgriešana

Izmantojot funkciju strftime() Jūs varat iegūt gadu, mēnesi, dienu, stundu, minūtes, sekundes atsevišķi un atgriezt tos teksta virknē. Pēc tam to var izdrukāt lietotājam, izmantojot funkciju drukāt () vai citādi apstrādāti.

Kā argumentu funkcija var izmantot jebkuru mainīgo, kas iegūst vērtību, ko atgriež citas šī moduļa funkcijas. Piemēram, varat pārsūtīt uz to vietējo laiku (par to tiks runāts vēlāk), no kura tas izvilks nepieciešamos datus.

Šeit ir koda fragments, kur mēs to darām.

importa laiks

named_tuple = time.localtime() # iegūt struct_time

laika_virkne = laiks.strftime(«%m/%d/%Y, %H:%M:%S», nosaukts_korpuss)

drukāt(laika_virkne)

Ja palaižat šo kodu, tiks parādīts pašreizējais datums un laiks. Elementu formātu un secību var mainīt. Tie ir šādi:

  1. %Y ir gads.
  2. %m ir mēnesis.
  3. %d — diena.
  4. %H – laiks.
  5. %M – minūtes.
  6. %S — otrais.

Attiecīgi jūs varat izveidot tā, lai izvade būtu tikai mēnesis un diena. Lai to izdarītu, jums vienkārši nav jādod komanda, lai parādītu gadu. Tas ir, ierakstiet iepriekš minētajā formulā kā argumentu %m/%d, un viss. Vai otrādi, %d/%m. 

Faktiski virkņu literāļu skaits ir daudz lielāks. Šeit ir tabula, kurā tie ir sīki aprakstīti.Laika modulis Python 3. Galvenās metodes, veidnes, piemēri

Atlikt pavedienu uz noteiktu sekunžu skaitu

Šim nolūkam tiek izmantota funkcija Gulēt (). Diezgan liels programmēšanas uzdevumu bloks ir saistīts ar laika ritējumu. Dažreiz nākamais solis ir jāatliek uz noteiktu laiku. Piemēram, ja jums ir nepieciešams mijiedarboties ar datu bāzi, kuras apstrāde prasa noteiktu laiku.

Kā arguments metode izmanto vērtību, kas izsaka sekunžu skaitu, lai aizkavētu nākamo darbību no algoritma.

Piemēram, šajā fragmentā aizkave ir 10 sekundes.

importa laiks

pauze = 10

drukāt ("Programma sākta...")

laiks.miegs(pauze)

drukāt(str(pauze) + » pagājušas sekundes.»)

Rezultātā mēs iegūsim šo:

Programma sākusies…

Pagāja 10 sekundes.

Kā redzam no izvades, programma vispirms ziņo, ka tā ir sākusies. Un pēc desmit sekundēm viņa rakstīja, ka šis laiks ir pagājis.

Funkcija ļauj norādīt pauzes ilgumu milisekundēs. Lai to izdarītu, mēs izmantojam funkcijas argumenta daļējas vērtības gulēt. Piemēram, 0,1. Tas nozīmē, ka aizkave būs 100 milisekundes.

Iegūstiet vietējo laiku

Izmantojot funkciju localtime(), programma iegūst sekunžu skaitu kopš laikmeta sākuma noteiktā laika joslā. 

Skaidrības labad dosim koda piemēru.

importa laiks

rezultāts = time.localtime(1575721830)

drukāt (“rezultāts:”, rezultāts)

print(«nгод:», rezultāts.tm_gads)

print(«tm_stunda:», rezultāts.tm_stunda)

Atgriež struct_time UTC, pamatojoties uz sekunžu skaitu kopš laikmeta

Šis uzdevums tiek sasniegts, izmantojot time.gmtime(). metodi. Tas būs skaidrāks, ja sniegsim piemēru.

importa laiks

rezultāts = time.gmtime(1575721830)

drukāt (“rezultāts:”, rezultāts)

print(«nгод:», rezultāts.tm_gads)

print(«tm_stunda:», rezultāts.tm_stunda)

Ja ieslēdzat šo darbību secību, tiks parādīta ar laiku, gadu un laika joslu saistīta elementu kopa.

Atgriezt sekunžu skaitu kopš laikmeta sākuma, izmantojot automātisku konvertēšanu uz vietējo laiku

Ja jūs saskaraties ar šādu uzdevumu, tas tiek īstenots, izmantojot metodi mktime(), kas aizņem struct_time. Pēc tam tas veic funkcijas apgriezto darbību vietējais laiks(). Tas nozīmē, ka tas pārvērš laiku atbilstoši vietējai laika joslai sekunžu skaitā, kas pagājušas kopš laikmeta sākuma, pielāgojot to laika joslai.

Funkcijas mktime() un localtime() ir cieši saistītas. Šis koda fragments to skaidri parāda. Apskatīsim to, lai dziļāk izprastu, kā tas darbojas. 

importa laiks

sekundes = 1575721830

# atgriež struct_time

t = laiks.vietējais laiks(sekundes)

drukāt(«t1: «, t)

# atgriež sekundes no struct_time

s = laiks.mktime(t)

drukāt («ns:», sekundes)

Mēs redzam, ka mainīgais sekundes kopš laikmeta ir piešķirtas 1575721830 sekundes. Pirmkārt, programma iegūst precīzu datumu, laiku un citus parametrus, pamatojoties uz šo vērtību, ievietojiet to mainīgajā tun pēc tam pārvērš tā saturu mainīgajā s.

Pēc tam pārspēj jaunu līniju un parāda sekunžu skaitu konsolē. Varat pārbaudīt, vai tas būs tas pats numurs, kas tika piešķirts sekunžu mainīgajam.

Izvades datums no 9 cipariem, kas attiecas uz struct_time

Pieņemsim, ka mums ir 9 skaitļi, kas apzīmē gadu, mēnesi, datumu, nedēļas dienu un vairākas citas vērtības, un mums tie ir jāapvieno vienā virknē. Šim nolūkam tiek izmantota funkcija asctime(). Viņa pieņem vai gatava struct_time, vai jebkura cita 9 vērtību virkne, kas apzīmē to pašu. Pēc tam tiek atgriezta virkne, kas ir datums, laiks un vairāki citi parametri. 

Šo metodi ir ļoti ērti izmantot, lai atšķirīgus lietotāja norādītos datus apvienotu vienā mainīgajā..

Piemēram, tā var būt programma, kurā lietotājs atsevišķi norāda dienu, mēnesi, gadu, nedēļas dienu un citus datus par reģistrāciju pasākumam. Pēc tam saņemtā informācija tiek ievadīta datu bāzē un pēc tam izsniegta citai personai, kas to pieprasa.

Laika un datuma iegūšana, pamatojoties uz Python virkni

Pieņemsim, ka lietotājs ir norādījis atšķirīgus datus, un mums tie ir jāapvieno vienā rindā tādā formātā, ko ievadīja persona, un pēc tam jāizveido kopija citam mainīgajam un tajā jāpārveido standarta formātā. Šim nolūkam tiek izmantota funkcija laiks.strptime().

Tas aizņem mainīgo, kurā šī vērtība ir norādīta, un atgriež mums jau pazīstamo struct_time.

Skaidrības labad mēs uzrakstīsim šādu programmu.

importa laiks

time_string = «15. gada 2019. jūnijs»

rezultāts = laiks.strptime(laika_virkne, «%d %B, %Y»)

izdrukāt (rezultāts)

Uzminiet, kāds būs rezultāts? Mēģiniet uzminēt, neskatoties uz apakšējo līniju. Un tad pārbaudiet atbildi.

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)

Vārdu sakot, darbs ar datumiem un laikiem Python nemaz nav grūts. Pietiek ievērot šos norādījumus, un viss izdosies. Izmantojot bibliotēku laiks lietotājs saņem milzīgu skaitu iespēju strādāt ar laiku, piemēram:

  1. Apturēt programmas izpildi uz noteiktu laiku.
  2. Parādiet laiku, kas pagājis kopš laikmeta, sekundēs. Šo informāciju var izmantot, lai summētu laiku vai veiktu ar to citas matemātiskas darbības.
  3. Konvertējiet ērtā formātā. Turklāt programmētājs pats var iestatīt, kuri elementi tiks parādīti un kādā secībā. 

Ir arī vairākas citas iespējas, taču šodien mēs esam analizējuši visvienkāršākās. Tie noderēs gandrīz jebkurā programmā, kas kaut kā darbojas ar laiku. Veiksmi.

Atstāj atbildi