Tímaeining í Python 3. Helstu aðferðir, sniðmát, dæmi

Næstum öll forrit notar tíma. Í Python hefur sérstakt bókasafn verið þróað fyrir þetta - tíminotað til að framkvæma margvíslegar aðgerðir með því. Til að það virki verður fyrst að lýsa því yfir í upphafi kóðans. Þessi lína er notuð fyrir þetta:

innflutningstími

Við skulum íhuga mismunandi valkosti um hvernig á að nota þessa einingu rétt í reynd. 

Ákvarða fjölda sekúndna frá tímabilinu

Til að ná þessu verkefni er til aðgerð tími() sem tekur engar breytur. Skilagildi þess er hversu margar sekúndur hafa liðið frá 1. janúar 1970. Í Python er þessi tími kallaður upphaf tímabils. Að minnsta kosti í stýrikerfum Unix fjölskyldunnar.

Eins og fyrir Windows, dagsetningin er sú sama, en það geta verið vandamál með neikvæð gildi sem voru fyrir þessa dagsetningu. 

Tímabelti sem notað er er UTC.

innflutningstími

sekúndur = tími.tími()

print(“Seconds since epoch =”, sekúndur)

Flækjustigið við þessa aðgerð er að hún sýnir ekki nákvæmlega dagsetninguna heldur aðeins fjölda sekúndna. Til að breyta í sniðið sem allir þekkja þarftu að nota nákvæmar upplýsingar. Til þess er aðgerðin notuð time.ctime().

Skilar dagsetningu og tíma á venjulegu sniði

Til að skila tímanum á venjulegu sniði er til aðferð time.ctime(). Sviga gefa til kynna breytu eða tölu sem gefur til kynna fjölda sekúndna sem hafa liðið frá upphafi tímabilsins. Þessi aðferð skilar öllum dagsetningar- og tímaeiginleikum, þar með talið dagsetningu, ár, fjölda klukkustunda, mínútna, sekúndna og vikudags.

Einnig er hægt að nota þessa aðgerð án röksemda. Í þessu tilviki skilar það núverandi dagsetningu, tíma og svo framvegis.

Hér er kóðabútur sem sýnir þetta.

innflutningstími

print(time.ctime())

Þri 23. okt 10:18:23 2018

Síðasta línan er það sem er prentað á stjórnborðið þar sem Python túlkurinn er í gangi. Aðferðin forsniðir móttekinn fjölda sekúndna sjálfkrafa í notendaþekkt form. Að vísu eru allir þættir sem lýst er hér að ofan sjaldan notaðir. Að jafnaði þarftu að fá annað hvort aðeins tímann eða aðeins dagsetninguna í dag. Fyrir þetta er sérstök aðgerð notuð - strftime(). En áður en við íhugum það þurfum við að flokka bekkinn time.struct_time.

bekkjartími.struct_time

Þetta er flokkur röksemda sem hægt er að samþykkja með ýmsum aðferðum. Það hefur enga möguleika. Það er tuple með nafngreindu viðmóti. Einfaldlega sagt er hægt að nálgast þætti þessa flokks bæði með nafni og vísitölu.

Það samanstendur af eftirfarandi eiginleikum.Tímaeining í Python 3. Helstu aðferðir, sniðmát, dæmi

Athugið! Ólíkt mörgum öðrum forritunarmálum, hér getur mánuðurinn verið á bilinu 1 til 12, en ekki frá núlli til 11.

Skila tilteknu sniði

Að nota aðgerðina strftime() þú getur fengið ár, mánuð, dag, klukkustund, mínútur, sekúndur fyrir sig og skilað þeim í textastreng. Síðan er hægt að prenta það til notandans með því að nota aðgerðina prenta () eða afgreitt á annan hátt.

Sem rök getur fall tekið hvaða breytu sem er sem tekur gildi sem er skilað af öðrum föllum þessarar einingar. Til dæmis er hægt að flytja staðartíma á það (það verður fjallað um síðar), sem það mun draga út nauðsynleg gögn.

Hér er kóðabúturinn þar sem við gerum það.

innflutningstími

named_tuple = time.localtime() # fáðu struct_time

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

print(time_string)

Ef þú keyrir þennan kóða mun núverandi dagsetning og tími birtast. Hægt er að breyta sniði og röð þátta. Þau eru sem hér segir:

  1. %Y er árið.
  2. %m er mánuðurinn.
  3. %d – dagur.
  4. %H – tími.
  5. %M – mínútur.
  6. %S – sekúnda.

Í samræmi við það geturðu gert það þannig að framleiðslan sé eingöngu mánaðar og dags. Til að gera þetta þarftu einfaldlega ekki að gefa skipun um að birta árið. Það er að segja, skrifaðu í formúluna hér að ofan sem rök %m/%d, og það er það. Eða öfugt, %d/%m. 

Reyndar er fjöldi strengjabókstafa miklu meiri. Hér er tafla þar sem þeim er lýst í smáatriðum.Tímaeining í Python 3. Helstu aðferðir, sniðmát, dæmi

Fresta þræði í ákveðinn fjölda sekúndna

Til þess er aðgerðin notuð sofa (). Nokkuð stór blokk af forritunarverkefnum tengist liðnum tíma. Stundum þarf að fresta næsta skrefi um ákveðinn tíma. Til dæmis ef þú þarft að hafa samskipti við gagnagrunn sem tekur ákveðinn tíma að vinna úr.

Sem rök notar aðferðin gildi sem gefur til kynna fjölda sekúndna til að seinka næsta skrefi frá reikniritinu.

Til dæmis, í þessu broti, er seinkunin 10 sekúndur.

innflutningstími

hlé = 10

print(«Forrit byrjað...»)

time.sleep(hlé)

print(str(hlé) + » sekúndur liðnar.»)

Fyrir vikið munum við fá þetta:

Dagskrá hafin…

10 sekúndur liðu.

Eins og við sjáum af úttakinu greinir forritið fyrst frá því að það hafi byrjað. Og eftir tíu sekúndur skrifaði hún að þessi tími væri liðinn.

Aðgerðin gerir þér kleift að tilgreina lengd hlésins í millisekúndum. Til að gera þetta notum við brotagildi falla rifrildarinnar sofa. Til dæmis, 0,1. Þetta þýðir að seinkunin verður 100 millisekúndur.

Fáðu staðartíma

Með því að nota localtime() aðgerðina fær forritið fjölda sekúndna frá upphafi tímabilsins á tilteknu tímabelti. 

Við skulum gefa dæmi um kóða til skýrleika.

innflutningstími

niðurstaða = time.localtime(1575721830)

print(“niðurstaða:”, niðurstaða)

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

print(«tm_hour:», result.tm_hour)

Skila struct_time í UTC miðað við fjölda sekúndna frá tímaskeiði

Þetta verkefni er náð með því að nota time.gmtime(). aðferð. Það verður skýrara ef við tökum dæmi.

innflutningstími

niðurstaða = time.gmtime(1575721830)

print(“niðurstaða:”, niðurstaða)

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

print(«tm_hour:», result.tm_hour)

Ef þú kveikir á þessari röð aðgerða mun safn af þáttum sem tengjast tíma, ári og tímabelti birtast.

Skilaðu fjölda sekúndna frá upphafi tímabils með sjálfvirkri umbreytingu í staðartíma

Ef þú stendur frammi fyrir slíku verkefni er það útfært með aðferðinni mktime(), sem tekur struct_time. Eftir það framkvæmir það öfuga aðgerð aðgerðarinnar staðartími(). Það er, það breytir tímanum samkvæmt staðbundnu tímabelti í fjölda sekúndna sem hafa liðið frá upphafi tímabilsins, leiðrétt fyrir tímabeltinu.

Aðgerðirnar mktime() og localtime() eru nátengdar. Þessi kóðabútur sýnir þetta greinilega. Við skulum skoða það til að skilja nánar hvernig það virkar. 

innflutningstími

sekúndur = 1575721830

# skilar struct_time

t = time.localtime(sekúndur)

prenta («t1: «, t)

# skilar sekúndum frá struct_time

s = tími.mktime(t)

print(«ns:», sekúndur)

Við sjáum að breyt sekúndur hefur verið úthlutað 1575721830 sekúndum frá tímabilinu. Í fyrsta lagi fær forritið nákvæma dagsetningu, tíma og aðrar breytur, byggt á þessu gildi, settu það í breytu t, og breytir síðan innihaldi þess í breytu s.

Eftir það slær af nýrri línu og sýnir fjölda sekúndna í stjórnborðinu. Þú getur athugað að það verði sama númerið og sekúndubreytunni var úthlutað.

Úttaksdagur frá 9 tölum sem vísa til struct_time

Segjum að við höfum 9 tölur sem tákna ár, mánuð, dagsetningu, vikudag og fjölda annarra gilda og við þurfum að sameina þær í einn streng. Til þess er aðgerðin notuð asctime(). Hún samþykkir eða tilbúin struct_time, eða einhver önnur túlla með 9 gildum sem stendur fyrir það sama. Eftir það er strengur skilaður, sem er dagsetning, tími og fjöldi annarra breytu. 

Það er mjög þægilegt að nota þessa aðferð til að koma ólíkum notendaskilgreindum gögnum í eina breytu..

Til dæmis getur það verið forrit þar sem notandi tilgreinir sérstaklega dag, mánuð, ár, vikudag og önnur gögn varðandi skráningu á viðburð. Eftir það eru upplýsingarnar sem berast færðar inn í gagnagrunninn og síðan gefnar út til annars aðila sem þess óskar.

Að fá tíma og dagsetningu byggt á Python streng

Segjum sem svo að notandinn hafi tilgreint misjöfn gögn og við þurfum að sameina þau í eina línu á því sniði sem viðkomandi setti inn og gera síðan afrit yfir í aðra breytu og endurbyggja hana í staðlað snið þar. Til þess er aðgerðin notuð time.strptime().

Það tekur breytu þar sem þetta gildi er tilgreint og skilar því sem þegar er kunnugt fyrir okkur struct_time.

Til glöggvunar munum við skrifa slíkt forrit.

innflutningstími

time_string = «15. júní, 2019»

niðurstaða = time.strptime(time_string, «%d %B, %Y»)

prenta (niðurstaða)

Giska á hver framleiðslan verður? Reyndu að giska án þess að horfa á botninn. Og athugaðu svo svarið.

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

Í einu orði sagt, að vinna með dagsetningar og tíma í Python er alls ekki erfitt. Það er nóg að fylgja þessum leiðbeiningum og allt mun ganga upp. Að nota bókasafnið tími notandinn fær gríðarlega fjölda tækifæra til að vinna með tímann, svo sem:

  1. Fresta framkvæmd forrits í tiltekinn tíma.
  2. Sýndu tímann sem liðinn er frá tímabilinu, í sekúndum. Þessar upplýsingar er hægt að nota til að leggja saman tíma eða framkvæma aðrar stærðfræðilegar aðgerðir á þeim.
  3. Umbreyttu í þægilegt snið. Þar að auki getur forritarinn sjálfur stillt hvaða þættir verða sýndir og í hvaða röð. 

Það eru líka ýmsir aðrir möguleikar, en í dag höfum við greint þá helstu. Þeir munu koma sér vel í nánast hvaða forriti sem einhvern veginn virkar með tímanum. Gangi þér vel.

Skildu eftir skilaboð