Modiwl amser yn Python 3. Prif ddulliau, templedi, enghreifftiau

Mae bron unrhyw raglen yn defnyddio amser. Yn Python, mae llyfrgell ar wahân wedi'i datblygu ar gyfer hyn - amserei ddefnyddio i gyflawni amrywiaeth o weithredoedd ag ef. Er mwyn gwneud iddo weithio, rhaid ei ddatgan yn gyntaf ar ddechrau'r cod. Defnyddir y llinell hon ar gyfer hyn:

amser mewnforio

Gadewch i ni ystyried gwahanol opsiynau ar sut i ddefnyddio'r modiwl hwn yn gywir yn ymarferol. 

Pennu nifer yr eiliadau ers y cyfnod

I gyflawni'r dasg hon, mae swyddogaeth amser() sy'n cymryd dim paramedrau. Ei werth dychwelyd yw faint o eiliadau sydd wedi mynd heibio ers Ionawr 1, 1970. Yn Python, gelwir yr amser hwn yn ddechrau epoc. O leiaf mewn systemau gweithredu o'r teulu Unix.

Fel ar gyfer Windows, mae'r dyddiad yr un fath, ond efallai y bydd problemau gyda gwerthoedd negyddol a oedd cyn y dyddiad hwn. 

Y parth amser a ddefnyddir yw UTC.

amser mewnforio

eiliadau = amser.time()

print("Eiliadau ers yr epoc =", eiliadau)

Cymhlethdod y swyddogaeth hon yw nad yw'n arddangos y dyddiad yn union, ond dim ond nifer yr eiliadau. I drosi i'r fformat sy'n gyfarwydd i bawb, mae angen i chi ddefnyddio gwybodaeth gywir. Ar gyfer hyn, defnyddir y swyddogaeth amser.ctime().

Dychwelyd y dyddiad, amser yn y fformat arferol

I ddychwelyd yr amser yn y fformat arferol, mae yna ddull amser.ctime(). Mae'r cromfachau'n dynodi newidyn neu rif sy'n nodi nifer yr eiliadau sydd wedi mynd heibio ers dechrau'r cyfnod. Mae'r dull hwn yn dychwelyd yr holl nodweddion dyddiad ac amser, gan gynnwys y dyddiad, blwyddyn, nifer yr oriau, munudau, eiliadau, a diwrnod yr wythnos.

Gellir defnyddio'r swyddogaeth hon hefyd heb ddadleuon. Yn yr achos hwn, mae'n dychwelyd y dyddiad cyfredol, amser, ac ati.

Dyma snippet cod sy'n dangos hyn.

amser mewnforio

argraffu (amser.ctime())

Maw Hydref 23 10:18:23 2018

Y llinell olaf yw'r hyn sy'n cael ei argraffu i'r consol lle mae'r cyfieithydd Python yn rhedeg. Mae'r dull yn fformatio'r nifer o eiliadau a dderbyniwyd yn awtomatig i ffurf sy'n gyfarwydd i'r defnyddiwr. Yn wir, anaml y defnyddir yr holl elfennau a ddisgrifir uchod. Fel rheol, mae angen i chi gael naill ai'r amser yn unig, neu'r dyddiad heddiw yn unig. Ar gyfer hyn, defnyddir swyddogaeth ar wahân - strftime(). Ond cyn i ni ei ystyried, mae angen i ni ddosrannu'r dosbarth amser.struct_amser.

amser dosbarth.struct_time

Mae hwn yn gategori o ddadleuon y gellir eu derbyn trwy amrywiaeth o ddulliau. Nid oes ganddo unrhyw opsiynau. Mae'n tuple gyda rhyngwyneb a enwir. Yn syml, gellir cyrchu elfennau'r dosbarth hwn yn ôl enw a rhif mynegai.

Mae'n cynnwys y nodweddion canlynol.Modiwl amser yn Python 3. Prif ddulliau, templedi, enghreifftiau

Sylw! Yn wahanol i nifer o ieithoedd rhaglennu eraill, yma gall y mis amrywio o 1 i 12, ac nid o sero i 11.

Dychwelyd Fformat Penodol

Gan ddefnyddio'r swyddogaeth amser amser () gallwch gael y flwyddyn, mis, diwrnod, awr, munudau, eiliadau yn unigol a'u dychwelyd i linyn testun. Yna gellir ei argraffu i'r defnyddiwr gan ddefnyddio'r swyddogaeth argraffu () neu ei brosesu fel arall.

Fel dadl, gall ffwythiant gymryd unrhyw newidyn sy'n cymryd gwerth a ddychwelir gan swyddogaethau eraill y modiwl hwn. Er enghraifft, gallwch chi drosglwyddo'r amser lleol iddo (bydd yn cael ei drafod yn nes ymlaen), a bydd yn tynnu'r data angenrheidiol ohono.

Dyma'r pyt cod lle rydyn ni'n ei wneud.

amser mewnforio

name_tuple = amser.localtime() # get struct_time

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

argraffu (llinyn_amser)

Os ydych chi'n rhedeg y cod hwn, bydd y dyddiad a'r amser cyfredol yn cael eu dangos. Gellir newid fformat a dilyniant yr elfennau. Maent fel a ganlyn:

  1. %Y yw'r flwyddyn.
  2. %m yw'r mis.
  3. %d – dydd.
  4. % H - amser.
  5. % M – munudau.
  6. %S – eiliad.

Yn unol â hynny, gallwch ei wneud fel bod yr allbwn yn gyfan gwbl o'r mis a'r dydd. I wneud hyn, nid oes angen i chi roi gorchymyn i arddangos y flwyddyn. Hynny yw, ysgrifennwch y fformiwla uchod fel dadl %m/%d, a dyna ni. Neu i'r gwrthwyneb, %d/%m. 

Mewn gwirionedd, mae nifer y llythrennau llinynnol yn llawer mwy. Dyma dabl lle maen nhw'n cael eu disgrifio'n fanwl.Modiwl amser yn Python 3. Prif ddulliau, templedi, enghreifftiau

Gohiriwch edefyn am nifer penodol o eiliadau

Ar gyfer hyn, defnyddir y swyddogaeth cysgu (). Mae bloc gweddol fawr o dasgau rhaglennu yn gysylltiedig â threigl amser. Weithiau mae'n rhaid i chi ohirio'r cam nesaf am amser penodol. Er enghraifft, os oes angen i chi ryngweithio â chronfa ddata sy'n cymryd amser penodol i'w phrosesu.

Fel dadl, mae'r dull yn defnyddio gwerth sy'n mynegi nifer yr eiliadau i ohirio'r cam nesaf o'r algorithm.

Er enghraifft, yn y pyt hwn, yr oedi yw 10 eiliad.

amser mewnforio

saib = 10

print («Rhaglen wedi dechrau…»)

amser.sleep(saib)

print(str(saib) + » eiliadau wedi mynd heibio.»)

O ganlyniad, byddwn yn cael hyn:

Rhaglen wedi dechrau…

10 eiliad wedi mynd heibio.

Fel y gallwn weld o'r allbwn, mae'r rhaglen yn adrodd yn gyntaf ei bod wedi dechrau. Ac ymhen deg eiliad, hi a ysgrifennodd fod yr amser hwn wedi mynd heibio.

Mae'r swyddogaeth yn caniatáu ichi nodi hyd y saib mewn milieiliadau. I wneud hyn, rydym yn defnyddio gwerthoedd ffracsiynol y ddadl swyddogaeth cwsg. Er enghraifft, 0,1. Mae hyn yn golygu y bydd yr oedi yn 100 milieiliad.

Cael amser lleol

Gan ddefnyddio'r swyddogaeth localtime(), mae'r rhaglen yn cael nifer yr eiliadau ers dechrau'r epoc mewn parth amser penodol. 

Gadewch i ni roi cod enghreifftiol er eglurder.

amser mewnforio

canlyniad = amser.localtime(1575721830)

argraffu ("canlyniad:", canlyniad)

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

argraffu («tm_awr:», canlyniad.tm_awr)

Dychwelyd struct_time yn UTC yn seiliedig ar nifer yr eiliadau ers y cyfnod

Cyflawnir y dasg hon gan ddefnyddio'r amser.gmtime(). dull. Bydd yn gliriach os rhoddwn enghraifft.

amser mewnforio

canlyniad = amser.gmtime(1575721830)

argraffu ("canlyniad:", canlyniad)

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

argraffu («tm_awr:», canlyniad.tm_awr)

Os trowch y dilyniant hwn o gamau ymlaen, yna bydd set o elfennau sy'n ymwneud ag amser, blwyddyn a pharth amser yn cael eu harddangos.

Dychwelwch nifer yr eiliadau ers dechrau'r cyfnod gyda throsi awtomatig i amser lleol

Os ydych chi'n wynebu tasg o'r fath, fe'i gweithredir gan ddefnyddio'r dull amser mk (), sy'n cymryd strwythur_amser. Ar ôl hynny, mae'n perfformio gweithred wrthdroi'r swyddogaeth amser lleol(). Hynny yw, mae'n trosi'r amser yn ôl y parth amser lleol yn nifer yr eiliadau sydd wedi mynd heibio ers dechrau'r epoc, wedi'i addasu ar gyfer y parth amser.

Mae'r ffwythiannau mktime() a localtime() wedi'u cydblethu'n agos. Mae'r pyt cod hwn yn dangos hyn yn glir. Gadewch i ni edrych arno i ddeall yn ddyfnach sut mae'n gweithio. 

amser mewnforio

eiliad = 1575721830

Mae # yn dychwelyd struct_time

t = amser.localtime(eiliadau)

print(«t1:«, t)

Mae # yn dychwelyd eiliadau o struct_time

s = amser.mktime(t)

argraffu («ns:», eiliadau)

Rydym yn gweld bod y newidyn eiliad wedi cael ei neilltuo 1575721830 eiliad ers y cyfnod. Yn gyntaf, mae'r rhaglen yn cael yr union ddyddiad, amser a pharamedrau eraill, yn seiliedig ar y gwerth hwn, ei roi mewn newidyn t, ac yna'n trosi ei gynnwys yn newidyn s.

Ar ôl hynny yn curo oddi ar linell newydd ac yn dangos y nifer o eiliadau yn y consol. Gallwch wirio mai dyma'r un nifer a neilltuwyd i'r newidyn eiliadau.

Dyddiad allbwn o 9 rhif sy'n cyfeirio at struct_time

Tybiwch fod gennym ni 9 rhif yn cynrychioli'r flwyddyn, mis, dyddiad, diwrnod yr wythnos a nifer o werthoedd eraill, ac mae angen i ni eu cyfuno'n un llinyn. Ar gyfer hyn, defnyddir y swyddogaeth asctime (). Mae hi'n derbyn neu'n barod strwythur_amser, neu unrhyw tuple arall o 9 gwerth sy'n sefyll am yr un peth. Ar ôl hynny, dychwelir llinyn, sef dyddiad, amser, a nifer o baramedrau eraill. 

Mae'n gyfleus iawn defnyddio'r dull hwn er mwyn dod â data gwahanol a bennir gan ddefnyddwyr i mewn i un newidyn..

Er enghraifft, gall fod yn rhaglen lle mae'r defnyddiwr yn pennu ar wahân y diwrnod, y mis, y flwyddyn, y diwrnod o'r wythnos, a data arall ynghylch cofrestru ar gyfer digwyddiad. Ar ôl hynny, mae'r wybodaeth a dderbynnir yn cael ei rhoi yn y gronfa ddata ac yna'n cael ei rhoi i berson arall sy'n gofyn amdani.

Cael amser a dyddiad yn seiliedig ar linyn Python

Tybiwch fod y defnyddiwr wedi pennu data gwahanol, a bod angen inni eu cyfuno mewn un llinell yn y fformat a gofnodwyd gan y person, ac yna gwneud copi i newidyn arall, a'i ailadeiladu i fformat safonol yno. Ar gyfer hyn, defnyddir y swyddogaeth amser.strptime().

Mae'n cymryd newidyn lle mae'r gwerth hwn wedi'i nodi, ac yn dychwelyd yr hyn sydd eisoes yn gyfarwydd i ni strwythur_amser.

Er eglurder, byddwn yn ysgrifennu rhaglen o'r fath.

amser mewnforio

time_string = «15 Mehefin, 2019»

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

argraffu (canlyniad)

Tybed beth fydd yr allbwn? Ceisiwch ddyfalu heb edrych ar y llinell waelod. Ac yna gwiriwch yr ateb.

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)

Mewn gair, nid yw gweithio gyda dyddiadau ac amseroedd yn Python yn anodd o gwbl. Mae'n ddigon i ddilyn y cyfarwyddiadau hyn, a bydd popeth yn gweithio allan. Defnyddio'r Llyfrgell amser mae'r defnyddiwr yn cael nifer enfawr o gyfleoedd i weithio gydag amser, megis:

  1. Atal gweithrediad y rhaglen am gyfnod penodol o amser.
  2. Dangoswch yr amser sydd wedi mynd heibio ers y cyfnod, mewn eiliadau. Gellir defnyddio'r wybodaeth hon i grynhoi amser neu gyflawni gweithrediadau mathemategol eraill arni.
  3. Trosi i fformat cyfleus. Ar ben hynny, gall y rhaglennydd ei hun osod pa elfennau fydd yn cael eu harddangos ac ym mha ddilyniant. 

Mae yna hefyd nifer o bosibiliadau eraill, ond heddiw rydym wedi dadansoddi'r rhai mwyaf sylfaenol. Byddant yn dod yn ddefnyddiol mewn bron unrhyw raglen sydd rywsut yn gweithio gydag amser. Pob lwc.

Gadael ymateb