Modil tan nan Python 3. Metòd prensipal, modèl, egzanp

Prèske nenpòt pwogram itilize tan. Nan Python, yo te devlope yon bibliyotèk separe pou sa - tanitilize pou fè yon varyete aksyon ak li. Pou fè li travay, li dwe premye deklare nan kòmansman an nan kòd la. Liy sa a itilize pou sa:

tan enpòte

Ann konsidere opsyon diferan sou kòman yo sèvi ak modil sa a kòrèkteman nan pratik. 

Detèmine kantite segonn depi epòk la

Pou akonpli travay sa a, gen yon fonksyon tan() ki pa pran okenn paramèt. Valè retounen li se konbyen segonn ki pase depi 1ye janvye 1970. Nan Python, yo rele tan sa a kòmansman yon epòk. Omwen nan sistèm operasyon nan fanmi an Unix.

Kòm pou Windows, dat la se menm, men ka gen pwoblèm ak valè negatif ki te anvan dat sa a. 

Zòn lè yo itilize se UTC.

tan enpòte

segonn = tan.tan ()

print("Segonn depi epòk =", segonn)

Konpleksite nan fonksyon sa a se ke li pa montre egzakteman dat la, men se sèlman kantite segonn. Pou konvèti nan fòma abitye pou tout moun, ou bezwen sèvi ak enfòmasyon egzat. Pou sa, yo itilize fonksyon an tan.ctime().

Retounen dat, lè a nan fòma nòmal la

Pou retounen tan an nan fòma nòmal la, gen yon metòd tan.ctime(). Parantèz yo endike yon varyab oswa yon nimewo ki endike kantite segonn ki te pase depi kòmansman epòk la. Metòd sa a retounen tout karakteristik dat ak lè, ki gen ladan dat, ane, kantite èdtan, minit, segonn ak jou semèn nan.

Fonksyon sa a ka itilize tou san diskisyon. Nan ka sa a, li retounen dat aktyèl la, lè, ak sou sa.

Isit la se yon snippet kòd ki demontre sa.

tan enpòte

enprime (time.ctime ())

Mardi 23 Oct 10:18:23 2018

Dènye liy lan se sa ki enprime nan konsole kote entèprèt Python la ap kouri. Metòd la otomatikman fòma kantite segonn resevwa nan yon fòm itilizatè abitye. Se vre, tout eleman ki dekri pi wo a yo raman itilize. Kòm yon règ, ou bezwen jwenn swa sèlman lè a, oswa sèlman dat jodi a. Pou sa, yo itilize yon fonksyon separe - strftime(). Men, anvan nou konsidere li, nou bezwen analize klas la tan.struct_time.

klas tan.struct_time

Sa a se yon kategori agiman ki ka aksepte pa yon seri de metòd. Li pa gen okenn opsyon. Li se yon tuple ak yon koòdone yo rele. Senpleman mete, eleman yo nan klas sa a ka jwenn aksè tou de pa non ak nimewo endèks.

Li konsiste de atribi sa yo.Modil tan nan Python 3. Metòd prensipal, modèl, egzanp

Atansyon! Kontrèman ak yon kantite lòt langaj pwogramasyon, isit la mwa a ka varye ant 1 a 12, epi yo pa soti nan zewo a 11.

Retounen yon fòma espesifik

Sèvi ak fonksyon an strftime() ou ka jwenn ane a, mwa, jou, èdtan, minit, segonn endividyèlman epi retounen yo nan yon seri tèks. Lè sa a, li ka enprime bay itilizatè a lè l sèvi avèk fonksyon an enprime () oswa otreman trete.

Kòm yon agiman, yon fonksyon ka pran nenpòt varyab ki pran yon valè retounen pa lòt fonksyon nan modil sa a. Pou egzanp, ou ka transfere lè lokal la nan li (li pral diskite pita), ki soti nan ki li pral rale soti done ki nesesè yo.

Isit la se snippet kòd la kote nou fè li.

tan enpòte

named_tuple = time.localtime() # jwenn struct_time

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

enprime (time_string)

Si ou kouri kòd sa a, dat ak lè aktyèl la ap parèt. Fòma ak sekans eleman yo ka chanje. Yo jan sa a:

  1. %Y se ane a.
  2. %m se mwa a.
  3. %d - jou.
  4. H - tan.
  5. %M - minit.
  6. %S - dezyèm.

An konsekans, ou ka fè li pou ke pwodiksyon an se sèlman nan mwa a ak jou. Pou fè sa, ou tou senpleman pa bezwen bay yon lòd pou montre ane a. Sa vle di, ekri nan fòmil ki anwo a kòm yon agiman %m/%d, epi se li. Oswa vis vèrsa, %d/%m. 

An reyalite, kantite literal fisèl yo pi gwo. Isit la se yon tablo kote yo dekri an detay.Modil tan nan Python 3. Metòd prensipal, modèl, egzanp

Ranvwaye yon fil pou yon sèten kantite segonn

Pou sa, yo itilize fonksyon an dòmi (). Yon blòk jistis gwo nan travay pwogramasyon ki asosye ak pasaj la nan tan. Pafwa ou oblije ranvwaye pwochen etap la pou yon sèten tan. Pou egzanp, si ou bezwen kominike avèk yon baz done ki pran yon sèten kantite tan nan pwosesis.

Kòm yon agiman, metòd la sèvi ak yon valè ki eksprime kantite segonn retade pwochen etap la soti nan algorithm la.

Pa egzanp, nan snippet sa a, reta a se 10 segonn.

tan enpòte

poz = 10

print(«Pwogram te kòmanse...»)

tan.dòmi (poz)

print(str(poz) + » segonn pase.»)

Kòm yon rezilta, nou pral jwenn sa a:

Pwogram te kòmanse...

10 segonn pase.

Kòm nou ka wè nan pwodiksyon an, pwogram nan premye rapòte ke li te kòmanse. Apre dis segonn, li te ekri ke tan sa a te pase.

Fonksyon an pèmèt ou presize dire poz la an milisgond. Pou fè sa, nou itilize valè fraksyon nan agiman fonksyon an dòmi. Pou egzanp, 0,1. Sa vle di ke reta a pral 100 milisgond.

Jwenn lè lokal

Sèvi ak fonksyon localtime(), pwogram nan jwenn kantite segonn depi kòmansman epòk la nan yon zòn tan espesifik. 

Ann bay yon egzanp kòd pou klè.

tan enpòte

rezilta = time.localtime(1575721830)

enprime ("rezilta:", rezilta)

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

enprime(«tm_hour:», result.tm_hour)

Retounen struct_time nan UTC ki baze sou kantite segonn depi epòk la

Travay sa a reyalize lè l sèvi avèk time.gmtime(). metòd. Li pral pi klè si nou bay yon egzanp.

tan enpòte

rezilta = time.gmtime(1575721830)

enprime ("rezilta:", rezilta)

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

enprime(«tm_hour:», result.tm_hour)

Si ou vire sou sekans aksyon sa a, Lè sa a, yon seri eleman ki gen rapò ak tan, ane ak zòn lè yo pral parèt.

Retounen kantite segonn depi kòmansman epòk la ak konvèsyon otomatik nan lè lokal la

Si w ap fè fas ak yon travay konsa, li aplike lè l sèvi avèk metòd la mktime(), ki pran struct_time. Apre sa, li fè aksyon an ranvèse nan fonksyon an lè lokal(). Sa vle di, li konvèti tan an selon zòn lè lokal la nan kantite segonn ki te pase depi kòmansman epòk la, ajiste pou zòn lè a.

Fonksyon mktime() ak localtime() yo byen mare. Fragman kòd sa a montre sa klèman. Ann pran yon gade nan li pou w konprann pi pwofondman ki jan li fonksyone. 

tan enpòte

segonn = 1575721830

# retounen struct_time

t = tan.localtime(segonn)

enprime(«t1: «, t)

# retounen segonn soti nan struct_time

s = tan.mktime(t)

enprime ("ns:", segonn)

Nou wè ke varyab la segonn yo te asiyen 1575721830 segonn depi epòk la. Premyèman, pwogram nan vin dat egzak la, lè ak lòt paramèt, ki baze sou valè sa a, mete l nan yon varyab t, ak Lè sa a, konvèti kontni li yo nan yon varyab s.

Apre sa bat nan yon nouvo liy epi montre kantite segonn nan konsole a. Ou ka tcheke ke li pral menm nimewo a ki te asiyen nan varyab segonn nan.

Sòti dat soti nan 9 nimewo ki refere a struct_time

Sipoze nou gen 9 nimewo ki reprezante ane a, mwa, dat, jou nan semèn nan ak yon kantite lòt valè, epi nou bezwen konbine yo nan yon sèl fisèl. Pou sa, yo itilize fonksyon an asctime(). Li aksepte oswa pare struct_time, oswa nenpòt lòt tuple nan 9 valè ki vle di menm bagay la. Apre sa, yon fisèl retounen, ki se yon dat, lè, ak yon kantite lòt paramèt. 

Li trè pratik yo sèvi ak metòd sa a yo nan lòd yo pote done disparate itilizatè-espesifye nan yon sèl varyab..

Pou egzanp, li ka yon pwogram kote itilizatè a espesifye separeman jou, mwa, ane, jou nan semèn nan, ak lòt done konsènan enskripsyon pou yon evènman. Apre sa, enfòmasyon yo resevwa yo antre nan baz done a epi yo bay yon lòt moun ki mande li.

Jwenn lè ak dat ki baze sou fisèl Python

Sipoze itilizatè a te espesifye done disparate, epi nou bezwen konbine yo nan yon sèl liy nan fòma ke moun nan te antre, ak Lè sa a, fè yon kopi nan yon lòt varyab, epi rekonstwi li nan yon fòma estanda la. Pou sa, yo itilize fonksyon an tan.strptime().

Li pran yon varyab nan ki se valè sa a espesifye, epi li retounen deja abitye nan nou struct_time.

Pou klè, nou pral ekri yon pwogram konsa.

tan enpòte

time_string = «15 jen, 2019»

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

enprime (rezilta)

Devine kisa pwodiksyon an pral ye? Eseye devine san gade nan liy anba a. Apre sa, tcheke repons lan.

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)

Nan yon mo, travay ak dat ak lè nan Python pa difisil ditou. Li se ase yo swiv enstriksyon sa yo, ak tout bagay pral travay deyò. Sèvi ak Bibliyotèk la tan itilizatè a jwenn yon gwo kantite opòtinite pou travay ak tan, tankou:

  1. Sispann ekzekisyon pwogram lan pou yon kantite tan espesifik.
  2. Montre tan ki pase depi epòk la, an segonn. Enfòmasyon sa a ka itilize pou rezime tan oswa fè lòt operasyon matematik sou li.
  3. Konvèti nan yon fòma pratik. Anplis, pwogramè a tèt li ka fikse ki eleman yo pral parèt ak nan ki sekans. 

Genyen tou yon kantite lòt posiblite, men jodi a nou te analize sa yo ki pi fondamantal. Yo pral sou la men nan prèske nenpòt pwogram ki yon jan kanmenm travay ak tan. Bon chans.

Kite yon Reply