Tidsmodul i Python 3. Hovedmetoder, skabeloner, eksempler

Næsten ethvert program bruger tid. I Python er der udviklet et separat bibliotek til dette – tidbruges til at udføre en række handlinger med det. For at få det til at fungere, skal det først deklareres i begyndelsen af ​​koden. Denne linje bruges til dette:

importtid

Lad os overveje forskellige muligheder for, hvordan man bruger dette modul korrekt i praksis. 

Bestemmelse af antallet af sekunder siden epoken

For at udføre denne opgave er der en funktion tid(), der ikke tager nogen parametre. Dens returværdi er, hvor mange sekunder der er gået siden 1. januar 1970. I Python kaldes denne tid starten på en epoke. I hvert fald i styresystemer i Unix-familien.

Med hensyn til Windows er datoen den samme, men der kan være problemer med negative værdier, der var før denne dato. 

Den anvendte tidszone er UTC.

importtid

sekunder = time.time()

print(“Sekunder siden epoke =”, sekunder)

Kompleksiteten af ​​denne funktion er, at den ikke viser nøjagtigt datoen, men kun antallet af sekunder. For at konvertere til det format, som alle kender, skal du bruge nøjagtige oplysninger. Til dette bruges funktionen time.ctime().

Returnerer dato og klokkeslæt i det sædvanlige format

For at returnere tiden i det sædvanlige format er der en metode time.ctime(). Paranteserne angiver en variabel eller et tal, der angiver antallet af sekunder, der er gået siden begyndelsen af ​​epoken. Denne metode returnerer alle dato- og tidskarakteristika, inklusive dato, år, antal timer, minutter, sekunder og ugedag.

Denne funktion kan også bruges uden argumenter. I dette tilfælde returnerer den den aktuelle dato, klokkeslæt og så videre.

Her er et kodestykke, der demonstrerer dette.

importtid

print(time.ctime())

Tirs 23. okt 10:18:23 2018

Den sidste linje er, hvad der udskrives til konsollen, hvor Python-fortolkeren kører. Metoden formaterer automatisk det modtagne antal sekunder til en brugerkendt formular. Det er sandt, at alle de ovenfor beskrevne elementer sjældent bruges. Som regel skal du enten kun få klokkeslættet eller kun dagens dato. Til dette bruges en separat funktion – strftime(). Men før vi overvejer det, skal vi analysere klassen time.struct_time.

time.struct_time

Dette er en kategori af argumenter, der kan accepteres af en række metoder. Den har ingen muligheder. Det er en tuple med en navngivet grænseflade. Enkelt sagt kan elementerne i denne klasse tilgås både med navn og indeksnummer.

Den består af følgende attributter.Tidsmodul i Python 3. Hovedmetoder, skabeloner, eksempler

Opmærksomhed! I modsætning til en række andre programmeringssprog kan måneden her variere fra 1 til 12, og ikke fra nul til 11.

Returnering af et bestemt format

Brug af funktionen strftime() du kan få år, måned, dag, time, minutter, sekunder individuelt og returnere dem til en tekststreng. Derefter kan den udskrives til brugeren ved hjælp af funktionen Print () eller på anden måde behandlet.

Som et argument kan en funktion tage enhver variabel, der tager en værdi, der returneres af andre funktioner i dette modul. For eksempel kan du overføre den lokale tid til den (det vil blive diskuteret senere), hvorfra den trækker de nødvendige data ud.

Her er kodestykket, hvor vi gør det.

importtid

named_tuple = time.localtime() # get struct_time

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

print(tidsstreng)

Hvis du kører denne kode, vil den aktuelle dato og klokkeslæt blive vist. Formatet og rækkefølgen af ​​elementer kan ændres. De er som følger:

  1. %Y er året.
  2. %m er måneden.
  3. %d – dag.
  4. %H – tid.
  5. %M – minutter.
  6. %S – sekund.

Derfor kan du gøre det, så output udelukkende er for måneden og dagen. For at gøre dette behøver du simpelthen ikke give en kommando for at vise året. Det vil sige, skriv i ovenstående formel som et argument %m/%d, og det er det. Eller omvendt, %d/%m. 

Faktisk er antallet af strengliteraler meget større. Her er en tabel, hvor de er beskrevet i detaljer.Tidsmodul i Python 3. Hovedmetoder, skabeloner, eksempler

Udskyd en tråd i et bestemt antal sekunder

Til dette bruges funktionen søvn (). En ret stor blok af programmeringsopgaver er forbundet med tidens gang. Nogle gange er du nødt til at udskyde det næste trin i en vis tid. For eksempel hvis du skal interagere med en database, der tager en vis tid at behandle.

Som et argument bruger metoden en værdi, der udtrykker antallet af sekunder for at forsinke det næste trin fra algoritmen.

For eksempel i dette uddrag er forsinkelsen 10 sekunder.

importtid

pause = 10

print(«Program startet...»)

time.sleep(pause)

print(str(pause) + » sekunder gået.»)

Som et resultat får vi dette:

Program startet...

10 sekunder gik.

Som vi kan se på outputtet, rapporterer programmet først, at det er startet. Og efter ti sekunder skrev hun, at denne tid var gået.

Funktionen giver dig mulighed for at angive varigheden af ​​pausen i millisekunder. For at gøre dette bruger vi brøkværdier af funktionsargumentet sove. For eksempel 0,1. Det betyder, at forsinkelsen bliver 100 millisekunder.

Få lokal tid

Ved at bruge funktionen localtime() får programmet antallet af sekunder siden starten af ​​epoken i en bestemt tidszone. 

Lad os give et eksempel på en kode for klarhedens skyld.

importtid

resultat = time.localtime(1575721830)

print(“resultat:”, resultat)

print(«nгод:», resultat.tm_år)

print(«tm_hour:», resultat.tm_hour)

Returner struct_time i UTC baseret på antal sekunder siden epoke

Denne opgave udføres ved hjælp af time.gmtime(). metode. Det vil være tydeligere, hvis vi giver et eksempel.

importtid

resultat = time.gmtime(1575721830)

print(“resultat:”, resultat)

print(«nгод:», resultat.tm_år)

print(«tm_hour:», resultat.tm_hour)

Hvis du slår denne sekvens af handlinger til, vil et sæt elementer relateret til tid, år og tidszone blive vist.

Returner antallet af sekunder siden starten af ​​epoken med automatisk konvertering til lokal tid

Står du med sådan en opgave, implementeres den ved hjælp af metoden mktime(), som tager struct_time. Derefter udfører den den omvendte handling af funktionen lokal tid(). Det vil sige, at den konverterer tiden i henhold til den lokale tidszone til det antal sekunder, der er gået siden starten af ​​epoken, justeret for tidszonen.

Funktionerne mktime() og localtime() er tæt forbundne. Dette kodestykke viser tydeligt dette. Lad os tage et kig på det for at forstå mere dybt, hvordan det fungerer. 

importtid

sekunder = 1575721830

# returnerer struct_time

t = time.localtime(sekunder)

print(«t1: «, t)

# returnerer sekunder fra struct_time

s = time.mktime(t)

print(«ns:», sekunder)

Vi ser, at variablen sekunder er blevet tildelt 1575721830 sekunder siden epoken. Først får programmet den nøjagtige dato, klokkeslæt og andre parametre, baseret på denne værdi, læg den i en variabel t, og konverterer derefter indholdet til en variabel s.

Derefter slår en ny linje af og viser antallet af sekunder i konsollen. Du kan kontrollere, at det vil være det samme nummer, som blev tildelt til sekundvariablen.

Outputdato fra 9 tal, der refererer til struct_time

Antag, at vi har 9 tal, der repræsenterer år, måned, dato, ugedag og en række andre værdier, og vi skal kombinere dem i én streng. Til dette bruges funktionen asctime(). Hun accepterer eller er klar struct_time, eller enhver anden tuple på 9 værdier, der står for det samme. Derefter returneres en streng, som er en dato, tid og en række andre parametre. 

Det er meget praktisk at bruge denne metode for at bringe forskellige brugerspecificerede data ind i en enkelt variabel..

Det kan fx være et program, hvor brugeren særskilt angiver dag, måned, år, ugedag og andre data vedrørende tilmelding til et arrangement. Derefter indtastes de modtagne oplysninger i databasen og sendes derefter til en anden person, der anmoder om det.

Henter tid og dato baseret på Python-streng

Antag, at brugeren har specificeret forskellige data, og vi skal kombinere dem til én linje i det format, som personen indtastede, og derefter lave en kopi til en anden variabel og genopbygge den til et standardformat der. Til dette bruges funktionen time.strptime().

Det tager en variabel, hvori denne værdi er angivet, og returnerer den allerede kendte til os struct_time.

For klarhedens skyld vil vi skrive et sådant program.

importtid

time_string = «15. juni 2019»

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

print (resultat)

Gæt hvad outputtet bliver? Prøv at gætte uden at se på bundlinjen. Og så tjek svaret.

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)

Kort sagt, det er slet ikke svært at arbejde med datoer og tidspunkter i Python. Det er nok at følge disse instruktioner, og alt vil fungere. Brug af biblioteket tid brugeren får et stort antal muligheder for at arbejde med tid, såsom:

  1. Afbryd programkørsel i et bestemt tidsrum.
  2. Vis den tid, der er gået siden epoken, i sekunder. Denne information kan bruges til at opsummere tid eller udføre andre matematiske operationer på den.
  3. Konverter til et praktisk format. Desuden kan programmøren selv indstille, hvilke elementer der skal vises og i hvilken rækkefølge. 

Der er også en række andre muligheder, men i dag har vi analyseret de mest basale. De vil være nyttige i næsten ethvert program, der på en eller anden måde fungerer med tiden. Held og lykke.

Giv en kommentar