Efnisyfirlit
- Ákvarða fjölda sekúndna frá tímabilinu
- Skilar dagsetningu og tíma á venjulegu sniði
- bekkjartími.struct_time
- Skila tilteknu sniði
- Fresta þræði í ákveðinn fjölda sekúndna
- Fáðu staðartíma
- Skila struct_time í UTC miðað við fjölda sekúndna frá tímaskeiði
- Skilaðu fjölda sekúndna frá upphafi tímabils með sjálfvirkri umbreytingu í staðartíma
- Úttaksdagur frá 9 tölum sem vísa til struct_time
- Að fá tíma og dagsetningu byggt á Python streng
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.
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:
- %Y er árið.
- %m er mánuðurinn.
- %d – dagur.
- %H – tími.
- %M – mínútur.
- %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.
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:
- Fresta framkvæmd forrits í tiltekinn tíma.
- 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.
- 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.