Hur man beräknar tidsskillnaden i Python

När du arbetar med datum och tider i Python behöver du ofta beräkna tidsskillnaden. I den här handledningen får du lära dig hur du beräknar skillnaden mellan två tidsstämplar i timmar, minuter och sekunder.

I slutet av denna handledning har du lärt dig:

  • hur man använder Pythons datetime-modul för att arbeta med datum och tid,
  • vad timedelta-objekt är, och hur de är användbara, och
  • beräkna tidsskillnaden mellan två valfria tidsstämplar – i timmar, minuter och sekunder.

Låt oss börja.

Hur man använder Pythons datetime-modul

För att arbeta med datum och tider i Python använder du modulen datetime. Datetime-modulen är en del av Python-standardbiblioteket. Så du kan gå vidare och importera den till din arbetsmiljö direkt, så här:

import datetime

För att beräkna tidsskillnaden måste du skapa två olika tidsstämplar. Du kan välja att skapa:

  • två datumobjekt,
  • två tidsobjekt, eller
  • en kombination av både datum och tid—datetime-objekt.

Hur man skapar ett datumobjekt i Python

Låt oss importera datumklassen från modulen datetime. För att skapa ett datumobjekt i Python kan du använda den allmänna syntaxen datetime.date(,,). Här är ett exempel på hur du skapar ett datumobjekt date1:

from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)

# Output: 2022-03-27

Du kan prova koden på adminvista.com Python-kompilatorn för att testa. Eller installera Python på din dator.

Som visas ovan, när du skriver ut datumet, formateras det i formatet ÅÅÅÅ-MM-DD för datum.

Obs! Var noga med att ange månaden som ett heltal utan några inledande nollor. Det är troligt att du är van att lägga till en inledande nolla till månaden när du skriver ner datum.

Till exempel, för att ange ett datum i juni, den 6:e månaden på året: använd 6 och inte 06.

Testa till exempel att köra följande kodavsnitt – där månaden har nämnts som 03 istället för bara 3. Du kommer att se att det ger ett syntaxfel som visas:

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.

Hur man skapar ett tidsobjekt i Python

För att skapa ett tidsobjekt, låt oss importera tidsklassen. Alla Python-tidsobjekt kan skapas med tidsklassen genom att ange följande klassattribut: timme, minut, sekund och mikrosekund.

Alla dessa attribut är dock valfria. Om du inte anger ett visst attribut, säg för det andra, är det inställt på 0 som standard.

Följande kodavsnitt visar hur du kan skapa ett tidsobjekt time1. Precis som med datumobjektet kan du skriva ut tidsobjektet för att se den formaterade tiden.

from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)

# Output: 13:27:45.004600

Hur man skapar ett datetime-objekt i Python

Som du kan se har datumobjektet ingen information om tiden. Och tidsobjektet innehåller inte information om datumet.

Men i praktiken behöver du information om både datum och tid. Så det rekommenderas att använda datetime-klassen istället.

Du kan komma åt datetime-klassen och skapa datetime-objekt i Python, som visas nedan:

dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)

# Output: 2022-03-27 13:27:45.046000

Låt oss nu skapa ett annat datetime-objekt dt2 utan det andra attributet. Du kan se att den är inställd på 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 hur du skapar tidsstämplar i Python – som datum, tider och datumtider. Det är nu dags att se hur du kan beräkna skillnaden mellan två valfria tidsstämplar.

Gå över till nästa avsnitt för att ta reda på det.

Hur man använder timedelta-objekt i Python

I Python betecknar tidsdelta ett tidsintervall. Det är skillnaden mellan två datum-, tid- eller datetime-objekt.

Om du lägger till eller subtraherar två datum-, tid- eller datetime-objekt, får du ett timedelta-objekt. Detta timedelta-objekt har användbara attribut och metoder som kan hjälpa till att beräkna tidsskillnaden.

Låt oss gå vidare och 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'>

Från ovanstående kodavsnitt kan du se att variabeln tdelta håller tidsskillnaden mellan dt1 och dt2. Och typen av tdelta verifieras att vara av klassen tidsdelta med Pythons inbyggda typ() fungera.

Låt oss nu koda ett annat exempel.

Hur man hittar tidsskillnaden mellan två datum

Låt oss ta ett enkelt men intressant exempel.

Problem: Att beräkna tidsskillnaden mellan det aktuella datumet (idag) och din födelsedag.
För att göra detta, ställ in idag som första tidsstämpel och din födelsedag som andra tidsstämpel.

Som ett första steg, låt oss skapa två datetime-objekt:

  • en för idag, låt oss kalla det idag, och
  • en annan på din födelsedag, låt oss kalla det för födelsedag

Klassen datetime har metoden now() som ger dig det aktuella lokala datumet och tiden. Så låt oss använda det idag – vårt referensdatum.

today = datetime.datetime.now()
print(today)

# Sample Output: 2022-01-22 09:10:18.489538

I koden nedan, ersätt bday med din födelsedag för att beräkna tiden som är kvar för din födelsedag i år.

Om du läser detta efter att din födelsedag har passerat, ställ gärna in 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 timedleta-objekt, som förklarats tidigare. Dra helt enkelt av idag från din födelsedag så har du tidsskillnaden.

time_diff = bday - today
print(f"Your birthday is in {time_diff}")

# Output
Your birthday is in 220 days, 2:46:00.127416

För att veta antalet dagar kvar, använd attributet days på time_diff, som visas:

tdays = time_diff.days
print(f"Your birthday is in {tdays} days.")

# Output
Your birthday is in 220 days.

Hur man hittar tidsskillnaden i sekunder

Låt oss nu räkna ut hur många sekunder bort din födelsedag är.

För att beräkna den totala tidsskillnaden i sekunder, använd 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.

Tja, det är för lång väntan!

Som sagt, du vet nu hur du beräknar tidsskillnaden mellan två valfria tidsstämplar i sekunder.

Låt oss nu gå igenom några grunder och skriva ner följande. En dag består av 24 timmar, en timme är 60 minuter lång och 60 sekunder utgör en minut.

Detta sammanfattas i bilden nedan:

Timmar, minuter och sekunder

Så för att konvertera från sekunder till minuter, timmar och dagar kan du använda följande tabell och dividera med motsvarande omvandlingsfaktor.

Tidsomvandlingstabell

Låt oss i nästa avsnitt omvandla tidsskillnaden i sekunder till minuter och timmar.

Hur man hittar 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 det i en variabel som heter tmins, så här:

tmins = tsecs/60
print(f"Your birthday is {tmins} minutes away.")

# Output
Your birthday is 316966.0021236 minutes away.

Hur man hittar tidsskillnaden i timmar

Nu när du har beräknat tidsskillnaden i minuter kan du dividera den med en faktor på 60 för att få skillnaden i timmar. Eller så kan du dividera det totala antalet 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 dig hur du beräknar tidsskillnaden i valfri enhet.

Slutsats

I den här handledningen har du lärt dig hur du:

  • skapa och arbeta med datum och tider med Pythons datetime-modul,
  • använd timedelta-objekt för att få ett tidsintervall, eller tidsskillnad, och
  • beräkna tidsskillnaden i sekunder, minuter och timmar.

Hoppas du tyckte att denna handledning var till hjälp. Nu när du vet allt om att beräkna tidsskillnad i Python är det dags att öva på dina färdigheter.

Lycka till med lärande och kodning!

Lär dig hur du skriver lika med eller inte lika med kod eller gör ett ormspel i python här.