Når du arbejder med datoer og klokkeslæt i Python, bliver du ofte nødt til at beregne tidsforskellen. I denne øvelse lærer du, hvordan du beregner forskellen mellem to tidsstempler i timer, minutter og sekunder.
Ved slutningen af denne øvelse har du lært:
- hvordan man bruger Pythons datetime-modul til at arbejde med datoer og klokkeslæt,
- hvad timedelta-objekter er, og hvordan de er nyttige, og
- beregne tidsforskellen mellem to tidsstempler – i timer, minutter og sekunder.
Lad os komme igang.
Indholdsfortegnelse
Sådan bruger du Pythons datetime-modul
For at arbejde med datoer og klokkeslæt i Python skal du bruge datetime-modulet. Datetime-modulet er en del af Python-standardbiblioteket. Så du kan gå videre og importere det til dit arbejdsmiljø med det samme, sådan her:
import datetime
For at beregne tidsforskellen skal du oprette to forskellige tidsstempler. Du kan vælge at oprette:
- to datoobjekter,
- to tidsobjekter, eller
- en kombination af både dato og tid – datetime-objekter.
Sådan opretter du et datoobjekt i Python
Lad os importere datoklassen fra datetime-modulet. For at oprette et datoobjekt i Python kan du bruge den generelle syntaks datetime.date(<år>,
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
Du kan prøve koden på toadmin.dk Python-kompileren for at teste. Eller installer Python på din computer.
Som vist ovenfor, når du udskriver datoen, er den formateret i formatet ÅÅÅÅ-MM-DD for datoer.
Bemærk: Sørg for at angive måneden som et heltal uden indledende nuller. Det er sandsynligt, at du er vant til at tilføje et indledende nul til måneden, når du skriver datoer ned.
For eksempel, for at angive en dato i juni, den 6. måned i året: brug 6 og ikke 06.
Prøv f.eks. at køre følgende kodestykke – hvor måneden er blevet nævnt som 03 i stedet for kun 3. Du vil se, at den kaster en syntaksfejl som vist:
date1 = datetime.date(2022,03,27) print(date1) # Error Message File "<ipython-input-12-6eb72084e6ce>", line 1 date1 = datetime.date(2022,03,27) ^ SyntaxError: invalid token
Lad os nu se, hvordan man opretter et tidsobjekt i Python.
Sådan opretter du et tidsobjekt i Python
Lad os importere tidsklassen for at oprette et tidsobjekt. Ethvert Python-tidsobjekt kan oprettes ved hjælp af tidsklassen ved at angive følgende klasseattributter: time, minut, sekund og mikrosekund.
Alle disse attributter er dog valgfrie. Hvis du ikke angiver en bestemt egenskab, f.eks. for det andet, er den som standard sat til 0.
Følgende kodestykke viser, hvordan du kan oprette et tidsobjekt time1. Som med datoobjektet kan du udskrive tidsobjektet for at se den formaterede tid.
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600
Sådan opretter du et datetime-objekt i Python
Som du kan se, har datoobjektet ingen information om tidspunktet. Og tidsobjektet indeholder ikke oplysninger om datoen.
Men i praksis har du brug for både dato og klokkeslæt. Så det anbefales at bruge datetime-klassen i stedet for.
Du kan få adgang til datetime-klassen og oprette datetime-objekter i Python, som vist nedenfor:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
Lad os nu oprette et andet datetime-objekt dt2 uden den anden attribut. Du kan se, at den er sat til 0 – standardværdien.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00
Indtil videre har du lært, hvordan du opretter tidsstempler i Python – som datoer, klokkeslæt og datotider. Det er nu tid til at se, hvordan du kan beregne forskellen mellem to tidsstempler.
Gå over til næste afsnit for at finde ud af det.
Sådan bruger du timedelta-objekt i Python
I Python betegner tidsdelta et tidsrum. Det er forskellen mellem to dato-, klokkeslæts- eller datetime-objekter.
Hvis du tilføjer eller trækker to dato-, klokkeslæts- eller datetime-objekter, får du et timedelta-objekt. Dette tidsdelta-objekt har nyttige attributter og metoder, der kan hjælpe med at beregne tidsforskellen.
Lad os gå videre og beregne forskellen mellem de to datetime-objekter dt1 og dt2.
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) dt2 = datetime.datetime(2022,6,30,14,28) tdelta = dt2 - dt1 print(tdelta) print(type(tdelta)) # Output 95 days, 1:00:14.954000 <class 'datetime.timedelta'>
Fra ovenstående kodestykke kan du se, at tdelta-variablen holder tidsforskellen mellem dt1 og dt2. Og typen af tdelta er verificeret til at være af klassen timedelta ved hjælp af Pythons indbyggede type() fungere.
Lad os nu kode et andet eksempel.
Sådan finder du tidsforskel mellem to datoer
Lad os tage et simpelt, men interessant eksempel.
Problem: At beregne tidsforskellen mellem den aktuelle dato (i dag) og din fødselsdag.
For at gøre dette skal du indstille i dag som det første tidsstempel og din fødselsdag som det andet tidsstempel.
Lad os som et første trin oprette to datetime-objekter:
- en for i dag, lad os kalde det i dag, og
- en anden til din fødselsdag, lad os kalde det fødselsdag
Datetime-klassen har metoden now(), der giver dig den aktuelle lokale dato og tid. Så lad os bruge det i dag – vores referencedato.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
I koden nedenfor skal du erstatte bday med din fødselsdag for at beregne den resterende tid til din fødselsdag i år.
Hvis du læser dette, efter din fødselsdag er overstået, er du velkommen til at indstille bday til din næste fødselsdag.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00
Det næste trin er at beregne time_diff, som er et timedleta-objekt, som forklaret tidligere. Træk blot i dag fra din fødselsdag, og du vil have tidsforskellen.
time_diff = bday - today print(f"Your birthday is in {time_diff}") # Output Your birthday is in 220 days, 2:46:00.127416
For at kende antallet af dage tilbage skal du bruge attributten dage på time_diff, som vist:
tdays = time_diff.days print(f"Your birthday is in {tdays} days.") # Output Your birthday is in 220 days.
Sådan finder du tidsforskel i sekunder
Lad os nu beregne, hvor mange sekunder der er til din fødselsdag.
For at beregne den samlede tidsforskel i sekunder skal du bruge metoden total_seconds() på timedelta-objektet time_diff.
tsecs = time_diff.total_seconds() print(f"Your birthday is {tsecs} seconds away.") # Output Your birthday is 19017960.127416 seconds away.
Nå, det er for lang ventetid!
Når det er sagt, ved du nu, hvordan du beregner tidsforskellen mellem to tidsstempler i sekunder.
Lad os nu gense nogle grundlæggende ting og skrive følgende ned. Et døgn består af 24 timer, en time er 60 minutter lang, og 60 sekunder udgør et minut.
Dette er opsummeret på billedet nedenfor:
Timer, minutter og sekunder
Så for at konvertere fra sekunder til minutter, timer og dage, kan du bruge følgende tabel og dividere med den tilsvarende konverteringsfaktor.
Tidsomregningstabel
Lad os i de næste afsnit konvertere tidsforskellen i sekunder til minutter og timer.
Sådan finder du tidsforskel i minutter
For at få tidsforskellen i minutter skal du kun dividere det samlede antal sekunder med 60.
Lad os dividere tsecs med 60 og gemme det i en variabel kaldet tmins, sådan her:
tmins = tsecs/60 print(f"Your birthday is {tmins} minutes away.") # Output Your birthday is 316966.0021236 minutes away.
Sådan finder du tidsforskel i timer
Nu hvor du har beregnet tidsforskellen i minutter, kan du dividere den med en faktor på 60 for at få forskellen i timer. Eller du kan dividere det samlede antal sekunder med 60*60 = 3600.
thrs = tsecs/(60*60) print(f"Your birthday is {thrs} hours away.") # Output Your birthday is 5282.76670206 hours away.
Så du har nu lært, hvordan du beregner tidsforskellen i enhver enhed efter eget valg.
Konklusion
I dette selvstudie har du lært, hvordan du:
- oprette og arbejde med datoer og klokkeslæt ved hjælp af Pythons datetime-modul,
- brug timedelta-objekter til at få et tidsrum, eller tidsforskel, og
- beregne tidsforskellen i sekunder, minutter og timer.
Håber du fandt denne tutorial nyttig. Nu hvor du ved alt om beregning af tidsforskel i Python, er det tid til at øve dine færdigheder.
God læring og kodning!
Lær hvordan du skriver lig med eller ikke lig med kode eller lav et slangespil i python her.