Moduli ya wakati katika Python 3. Njia kuu, templates, mifano

Karibu programu yoyote hutumia wakati. Katika Python, maktaba tofauti imetengenezwa kwa hili - wakatikutumika kufanya vitendo mbalimbali nayo. Ili kuifanya kazi, lazima kwanza itangazwe mwanzoni mwa msimbo. Mstari huu hutumiwa kwa hili:

muda wa kuagiza

Hebu tuchunguze chaguo tofauti za jinsi ya kutumia moduli hii kwa usahihi katika mazoezi. 

Kubainisha idadi ya sekunde tangu enzi

Ili kukamilisha kazi hii, kuna kazi wakati() ambayo haichukui vigezo. Thamani yake ya kurudi ni sekunde ngapi zimepita tangu Januari 1, 1970. Katika Python, wakati huu unaitwa mwanzo wa epoch. Angalau katika mifumo ya uendeshaji ya familia ya Unix.

Kama kwa Windows, tarehe ni sawa, lakini kunaweza kuwa na shida na maadili hasi ambayo yalikuwa kabla ya tarehe hii. 

Saa za eneo zinazotumika ni UTC.

muda wa kuagiza

sekunde = time.time()

chapa ("Sekunde tangu enzi =", sekunde)

Ugumu wa chaguo hili ni kwamba haionyeshi tarehe haswa, lakini idadi ya sekunde tu. Ili kubadilisha hadi umbizo linalojulikana na kila mtu, unahitaji kutumia taarifa sahihi. Kwa hili, kazi hutumiwa time.ctime().

Inarejesha tarehe, wakati katika muundo wa kawaida

Ili kurudisha wakati katika muundo wa kawaida, kuna njia time.ctime(). Mabano yanaonyesha kigezo au nambari inayoonyesha idadi ya sekunde ambazo zimepita tangu mwanzo wa enzi. Njia hii inarejesha sifa zote za tarehe na wakati, ikiwa ni pamoja na tarehe, mwaka, idadi ya saa, dakika, sekunde, na siku ya juma.

Chaguo hili la kukokotoa linaweza pia kutumika bila hoja. Katika kesi hii, inarudi tarehe ya sasa, wakati, na kadhalika.

Hapa kuna kijisehemu cha msimbo ambacho kinaonyesha hii.

muda wa kuagiza

chapa(time.ctime())

Jumanne Oktoba 23 10:18:23 2018

Mstari wa mwisho ndio uliochapishwa kwa koni ambapo mkalimani wa Python anaendesha. Njia hii inaunda kiotomati nambari iliyopokelewa ya sekunde kuwa fomu inayojulikana na mtumiaji. Kweli, vipengele vyote vilivyoelezwa hapo juu hutumiwa mara chache. Kama sheria, unahitaji kupata wakati tu, au tarehe ya leo tu. Kwa hili, kazi tofauti hutumiwa - strftime(). Lakini kabla ya kuizingatia, tunahitaji kuchanganua darasa wakati.muundo_wakati.

muda wa darasa.struct_time

Hii ni kategoria ya hoja ambazo zinaweza kukubaliwa na anuwai ya mbinu. Haina chaguo zozote. Ni nakala iliyo na kiolesura kilichopewa jina. Kuweka tu, vipengele vya darasa hili vinaweza kupatikana kwa jina na kwa nambari ya index.

Inajumuisha sifa zifuatazo.Moduli ya wakati katika Python 3. Njia kuu, templates, mifano

Tahadhari! Tofauti na idadi ya lugha zingine za programu, hapa mwezi unaweza kuanzia 1 hadi 12, na sio kutoka sifuri hadi 11.

Inarejesha Umbizo Maalum

Kwa kutumia kipengele strftime() unaweza kupata mwaka, mwezi, siku, saa, dakika, sekunde moja kwa moja na kuzirudisha kwa mfuatano wa maandishi. Kisha inaweza kuchapishwa kwa mtumiaji kwa kutumia kazi chapa () au vinginevyo kuchakatwa.

Kama hoja, chaguo la kukokotoa linaweza kuchukua kigezo chochote kinachochukua thamani iliyorejeshwa na vitendakazi vingine vya sehemu hii. Kwa mfano, unaweza kuhamisha wakati wa ndani kwake (itajadiliwa baadaye), ambayo itatoa data muhimu.

Hapa kuna kijisehemu cha msimbo ambapo tunaifanya.

muda wa kuagiza

named_tuple = time.localtime() # pata struct_time

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

chapa(time_string)

Ukiendesha msimbo huu, tarehe na saa ya sasa itaonyeshwa. Muundo na mlolongo wa vipengele vinaweza kubadilishwa. Wao ni kama ifuatavyo:

  1. %Y ni mwaka.
  2. %m ni mwezi.
  3. %d - siku.
  4. %H - saa.
  5. %M - dakika.
  6. %S - sekunde.

Ipasavyo, unaweza kuifanya ili matokeo yawe ya mwezi na siku pekee. Ili kufanya hivyo, hauitaji tu kutoa amri ya kuonyesha mwaka. Hiyo ni, andika katika fomula iliyo hapo juu kama hoja %m/%d, na ndivyo hivyo. Au kinyume chake, %d/%m. 

Kwa kweli, idadi ya maandishi ya kamba ni kubwa zaidi. Hapa kuna jedwali ambalo limeelezewa kwa undani.Moduli ya wakati katika Python 3. Njia kuu, templates, mifano

Ahirisha thread kwa idadi fulani ya sekunde

Kwa hili, kazi hutumiwa kulala (). Kizuizi kikubwa cha kazi za programu kinahusishwa na kupita kwa wakati. Wakati mwingine unapaswa kuahirisha hatua inayofuata kwa muda fulani. Kwa mfano, ikiwa unahitaji kuingiliana na hifadhidata ambayo inachukua muda fulani kuchakata.

Kama hoja, mbinu hutumia thamani inayoonyesha idadi ya sekunde ili kuchelewesha hatua inayofuata kutoka kwa algoriti.

Kwa mfano, katika kijisehemu hiki, kuchelewa ni sekunde 10.

muda wa kuagiza

pause = 10

chapisha ("Programu imeanza ...")

wakati.lala(pause)

chapisha(str(pause) + »sekunde zimepita.»)

Kama matokeo, tutapata hii:

Mpango umeanza…

Sekunde 10 zimepita.

Kama tunavyoweza kuona kutoka kwa matokeo, programu inaripoti kwanza kwamba imeanza. Na baada ya sekunde kumi, aliandika kwamba wakati huu ulikuwa umepita.

Chaguo za kukokotoa hukuruhusu kubainisha muda wa kusitisha katika milisekunde. Ili kufanya hivyo, tunatumia maadili ya sehemu ya hoja ya kazi usingizi. Kwa mfano, 0,1. Hii ina maana kwamba kuchelewa itakuwa milliseconds 100.

Pata saa za ndani

Kwa kutumia localtime() kitendakazi, programu hupata idadi ya sekunde tangu kuanza kwa enzi katika eneo maalum la saa. 

Wacha tutoe nambari ya mfano kwa uwazi.

muda wa kuagiza

matokeo = wakati.wakati wa ndani (1575721830)

chapa ("matokeo:", matokeo)

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

chapisha(«tm_hour:», result.tm_hour)

Rejesha struct_time katika UTC kulingana na idadi ya sekunde tangu enzi

Kazi hii inafanikiwa kwa kutumia time.gmtime(). njia. Itakuwa wazi zaidi ikiwa tutatoa mfano.

muda wa kuagiza

matokeo = time.gmtime(1575721830)

chapa ("matokeo:", matokeo)

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

chapisha(«tm_hour:», result.tm_hour)

Ikiwa unawasha mlolongo huu wa vitendo, basi seti ya vipengele vinavyohusiana na wakati, mwaka na eneo la wakati litaonyeshwa.

Rejesha idadi ya sekunde tangu mwanzo wa enzi na ubadilishaji wa kiotomatiki hadi wakati wa ndani

Ikiwa unakabiliwa na kazi hiyo, inatekelezwa kwa kutumia njia mktime(), ambayo inachukua wakati_wa_muundo. Baada ya hayo, hufanya hatua ya nyuma ya kazi localtime(). Hiyo ni, inabadilisha wakati kulingana na eneo la saa la ndani kuwa idadi ya sekunde ambazo zimepita tangu mwanzo wa enzi, iliyorekebishwa kwa eneo la saa.

Kazi za mktime() na localtime() zimeunganishwa kwa karibu. Kijisehemu hiki cha msimbo kinaonyesha hili kwa uwazi. Wacha tuiangalie ili kuelewa kwa undani zaidi jinsi inavyofanya kazi. 

muda wa kuagiza

sekunde = 1575721830

# inarudisha wakati_wa_muundo

t = wakati.wakati wa ndani(sekunde)

chapa(«t1: «, t)

# hurejesha sekunde kutoka kwa wakati_wa_muundo

s = time.mktime(t)

chapa («ns:», sekunde)

Tunaona kwamba kutofautiana sekunde imepewa sekunde 1575721830 tangu enzi. Kwanza, mpango hupata tarehe halisi, wakati na vigezo vingine, kulingana na thamani hii, kuiweka katika kutofautiana. t, na kisha kubadilisha yaliyomo ndani ya kutofautisha s.

Baada ya hapo hupiga mstari mpya na kuonyesha idadi ya sekunde kwenye koni. Unaweza kuangalia kuwa itakuwa nambari sawa ambayo ilipewa kutofautisha kwa sekunde.

Tarehe ya kutolewa kutoka kwa nambari 9 zinazorejelea struct_time

Tuseme tuna nambari 9 zinazowakilisha mwaka, mwezi, tarehe, siku ya juma na idadi ya maadili mengine, na tunahitaji kuzichanganya katika mfuatano mmoja. Kwa hili, kazi hutumiwa asctime(). Anakubali au yuko tayari wakati_wa_muundo, au nakala nyingine yoyote ya maadili 9 ambayo inasimamia sawa. Baada ya hayo, kamba inarudi, ambayo ni tarehe, wakati, na idadi ya vigezo vingine. 

Ni rahisi sana kutumia njia hii ili kuleta data tofauti iliyoainishwa na mtumiaji katika kigezo kimoja..

Kwa mfano, inaweza kuwa programu ambapo mtumiaji anabainisha tofauti siku, mwezi, mwaka, siku ya wiki na data nyingine kuhusu usajili wa tukio. Baada ya hapo, habari iliyopokelewa huingizwa kwenye hifadhidata na kisha kutolewa kwa mtu mwingine anayeiomba.

Kupata wakati na tarehe kulingana na kamba ya Python

Tuseme mtumiaji amebainisha data tofauti, na tunahitaji kuzichanganya katika mstari mmoja katika umbizo ambalo mtu huyo aliingia, na kisha kufanya nakala kwa kigezo kingine, na kuijenga upya katika umbizo la kawaida hapo. Kwa hili, kazi hutumiwa time.strtime().

Inachukua kigezo ambamo thamani hii imebainishwa, na kurejesha ile ambayo tayari tunaifahamu wakati_wa_muundo.

Kwa uwazi, tutaandika programu kama hiyo.

muda wa kuagiza

time_string = «15 Juni, 2019»

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

chapa (matokeo)

Nadhani pato litakuwa nini? Jaribu kubahatisha bila kuangalia mstari wa chini. Na kisha angalia jibu.

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

Kwa neno moja, kufanya kazi na tarehe na nyakati katika Python sio ngumu hata kidogo. Inatosha kufuata maagizo haya, na kila kitu kitafanya kazi. Kutumia Maktaba wakati mtumiaji anapata idadi kubwa ya fursa za kufanya kazi na wakati, kama vile:

  1. Sitisha utekelezaji wa programu kwa muda maalum.
  2. Onyesha muda ambao umepita tangu enzi, kwa sekunde. Taarifa hii inaweza kutumika kujumlisha muda au kufanya shughuli nyingine za hisabati juu yake.
  3. Geuza hadi umbizo linalofaa. Kwa kuongezea, mpangaji programu mwenyewe anaweza kuweka ni vitu vipi vitaonyeshwa na kwa mlolongo gani. 

Pia kuna idadi ya uwezekano mwingine, lakini leo tumechambua yale ya msingi zaidi. Watakuja kwa manufaa katika karibu programu yoyote ambayo kwa namna fulani inafanya kazi kwa wakati. Bahati njema.

Acha Reply