Sådan beregnes tidsforskel i Python

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.

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>,,). Her er et eksempel på oprettelse af et datoobjekt date1:

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.

  14 Azure Practice Tests for at hjælpe dig med at bestå den rigtige eksamen

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.

  Sådan deaktiverer du alle vibrationer på din iPhone fuldstændigt

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.

  Sådan logger du automatisk på din Mac uden adgangskode

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.