När du hanterar datum och klockslag i Python, är det ofta nödvändigt att räkna ut skillnaden i tid. Denna guide kommer att visa dig hur man beräknar skillnaden mellan två tidpunkter i timmar, minuter och sekunder.
Efter att ha läst denna handledning kommer du att ha lärt dig:
- Hur man använder Pythons datetime-modul för att manipulera datum och tid,
- Vad ett timedelta-objekt representerar och hur man använder det, samt
- Hur man beräknar tidsskillnaden mellan två godtyckliga tidpunkter – angivet i timmar, minuter och sekunder.
Låt oss sätta igång!
Användning av Pythons datetime-modul
För att hantera datum och tid i Python, använder man modulen datetime
. Denna modul ingår i Pythons standardbibliotek, så den kan importeras direkt i din arbetsmiljö:
import datetime
För att beräkna tidsskillnaden behöver du skapa två olika tidpunkter. Du kan välja att skapa:
- Två datumobjekt,
- Två tidsobjekt, eller
- En kombination av både datum och tid – ett datetime-objekt.
Skapa ett datumobjekt i Python
Låt oss börja med att importera date
-klassen från datetime
-modulen. Ett datumobjekt skapas med syntaxen datetime.date(<år>, <månad>, <dag>)
. Här är ett exempel där vi skapar ett datumobjekt kallat date1
:
from datetime import date date1 = datetime.date(2022,3,27) print(date1) # Output: 2022-03-27
Du kan testa koden genom att använda en online Python-kompilator eller genom att installera Python på din egen dator.
Som du kan se, när datumet skrivs ut, formateras det enligt formatet ÅÅÅÅ-MM-DD.
Observera: Månaden ska anges som ett heltal utan inledande nollor. Det är lätt att automatiskt lägga till en inledande nolla när man skriver datum.
Till exempel, för att ange ett datum i juni, den sjätte månaden, använder du 6
och inte 06
.
Om du till exempel kör följande kod, där månaden angetts som 03
i stället för 3
, får du ett syntaxfel:
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
Låt oss nu se hur man skapar ett tidsobjekt i Python.
Skapa ett tidsobjekt i Python
För att skapa ett tidsobjekt importerar vi time
-klassen. Alla Python-tidsobjekt skapas med time
-klassen genom att ange attributen: timme, minut, sekund och mikrosekund.
Alla dessa attribut är valfria. Om du inte anger ett visst attribut, exempelvis sekunden, sätts det till 0
som standard.
Följande kod visar hur du skapar ett tidsobjekt kallat time1
. Precis som med datumobjektet kan tidsobjektet skrivas ut för att se det formaterade tidsangivelsen.
from datetime import time time1 = datetime.time(13,27,45,4600) print(time1) # Output: 13:27:45.004600
Skapa ett datetime-objekt i Python
Som du har sett innehåller datumobjektet ingen information om klockslaget och tidsobjektet innehåller inte någon information om datumet.
I praktiken behöver man oftast information om både datum och tid. Därför rekommenderas att använda datetime
-klassen istället.
Du kan skapa datetime
-objekt enligt följande:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000) print(dt1) # Output: 2022-03-27 13:27:45.046000
Låt oss skapa ett till datetime-objekt, dt2
, utan sekund-attributet. Du kommer att se att det sätts till 0
– standardvärdet.
dt2 = datetime.datetime(2022,6,30,14,28) print(dt2) # Output: 2022-06-30 14:28:00
Hittills har du lärt dig att skapa tidpunkter i Python – som datum, klockslag och datetime-objekt. Det är nu dags att se hur du kan beräkna skillnaden mellan två valfria tidpunkter.
Fortsätt till nästa avsnitt för att lära dig mer.
Användning av timedelta-objekt i Python
I Python representerar timedelta
ett tidsintervall. Det är skillnaden mellan två datum, klockslag eller datetime-objekt.
Om du adderar eller subtraherar två datum-, klockslag eller datetime-objekt, får du ett timedelta
-objekt. Detta objekt har användbara attribut och metoder som kan hjälpa till att beräkna skillnaden i tid.
Låt oss nu beräkna skillnaden mellan de två datetime-objekten dt1
och 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'>
I koden ovan kan du se att variabeln tdelta
innehåller tidsskillnaden mellan dt1
och dt2
. Typen av tdelta
verifieras med Pythons inbyggda type()
-funktion och visar att det är ett timedelta
-objekt.
Låt oss nu gå vidare och titta på ett annat exempel.
Beräkna tidsskillnaden mellan två datum
Låt oss ta ett enkelt men intressant exempel.
Problem: Att beräkna tidsskillnaden mellan dagens datum och din födelsedag.
För att göra detta, sätt dagens datum som den första tidpunkten och din födelsedag som den andra tidpunkten.
Som ett första steg, låt oss skapa två datetime-objekt:
- Ett för dagens datum, som vi kallar
idag
, och - Ett annat för din födelsedag, som vi kallar
födelsedag
.
Klassen datetime
har metoden now()
, som ger dig det aktuella lokala datumet och tiden. Så låt oss använda detta för idag
– vår referenspunkt.
today = datetime.datetime.now() print(today) # Sample Output: 2022-01-22 09:10:18.489538
I koden nedan ersätter du bday
med din födelsedag för att räkna ut hur lång tid det är kvar till din födelsedag i år.
Om du läser detta efter att din födelsedag har passerat, kan du sätta bday
till din nästa födelsedag.
bday = datetime.datetime(2022,8,30,11,59) print(bday) # Sample Output: 2022-08-30 11:59:00
Nästa steg är att beräkna time_diff
, som är ett timedelta
-objekt, enligt tidigare. Subtrahera helt enkelt idag
från din födelsedag
så får du tidsskillnaden.
time_diff = bday - today print(f"Din födelsedag är om {time_diff}") # Output Din födelsedag är om 220 days, 2:46:00.127416
För att få reda på antalet dagar kvar, använder du attributet days
på time_diff
:
tdays = time_diff.days print(f"Din födelsedag är om {tdays} dagar.") # Output Din födelsedag är om 220 dagar.
Beräkna tidsskillnaden i sekunder
Låt oss nu ta reda på hur många sekunder det är kvar till din födelsedag.
För att beräkna den totala tidsskillnaden i sekunder, använder du metoden total_seconds()
på timedelta
-objektet time_diff
.
tsecs = time_diff.total_seconds() print(f"Din födelsedag är {tsecs} sekunder bort.") # Output Din födelsedag är 19017960.127416 sekunder bort.
Tja, det är lång väntan!
Nu vet du hur man beräknar skillnaden mellan två tidpunkter i sekunder.
Låt oss gå igenom några grunder. En dag består av 24 timmar, en timme är 60 minuter och 60 sekunder utgör en minut.
Detta illustreras i bilden nedan:
För att omvandla från sekunder till minuter, timmar och dagar kan du använda följande tabell och dividera med motsvarande omvandlingsfaktor.
Tidsomvandlingstabell
Från sekunder till | Dividera med |
Minuter | 60 |
Timmar | 3600 (60 * 60) |
Dagar | 86400 (60 * 60 * 24) |
I nästa avsnitt kommer vi att omvandla tidsskillnaden i sekunder till minuter och timmar.
Beräkna tidsskillnaden i minuter
För att få tidsskillnaden i minuter, behöver du bara dividera det totala antalet sekunder med 60.
Låt oss dividera tsecs
med 60 och lagra resultatet i en variabel som heter tmins
:
tmins = tsecs/60 print(f"Din födelsedag är {tmins} minuter bort.") # Output Din födelsedag är 316966.0021236 minuter bort.
Beräkna tidsskillnaden i timmar
Nu när du har räknat ut tidsskillnaden i minuter kan du dividera den med 60 för att få skillnaden i timmar. Du kan också dividera det totala antalet sekunder med 60*60 = 3600.
thrs = tsecs/(60*60) print(f"Din födelsedag är {thrs} timmar bort.") # Output Din födelsedag är 5282.76670206 timmar bort.
Nu har du lärt dig hur man beräknar tidsskillnaden i valfri enhet.
Sammanfattning
I den här guiden har du lärt dig hur du:
- Skapar och hanterar datum och klockslag med Pythons datetime-modul,
- Använder timedelta-objekt för att få ett tidsintervall, eller tidsskillnad, samt
- Beräknar tidsskillnaden i sekunder, minuter och timmar.
Hoppas att du har haft nytta av denna guide. Nu när du vet hur man beräknar tidsskillnad i Python, är det dags att öva!
Lycka till med lärande och kodning!
Lär dig mer om hur man skriver ”lika med” eller ”inte lika med”-kod eller skapa ett ormspel i Python här.