Hvordan beregne tidsforskjell i Python

Når du arbeider med datoer og klokkeslett i Python, må du ofte beregne tidsforskjellen. I denne opplæringen lærer du hvordan du beregner forskjellen mellom to tidsstempler i timer, minutter og sekunder.

På slutten av denne opplæringen har du lært:

  • hvordan du bruker Pythons datetime-modul til å jobbe med datoer og klokkeslett,
  • hva timedelta-objekter er, og hvordan de er nyttige, og
  • beregne tidsforskjellen mellom to tidsstempler – i timer, minutter og sekunder.

La oss komme i gang.

Slik bruker du Pythons datetime-modul

For å jobbe med datoer og klokkeslett i Python, bruker du datetime-modulen. Datetime-modulen er en del av Python-standardbiblioteket. Så du kan gå videre og importere den til arbeidsmiljøet ditt med en gang, slik:

import datetime

For å beregne tidsforskjellen må du lage to forskjellige tidsstempler. Du kan velge å opprette:

  • to datoobjekter,
  • to tidsobjekter, eller
  • en kombinasjon av både dato og klokkeslett – datetime-objekter.

Hvordan lage et datoobjekt i Python

La oss importere datoklassen fra datetime-modulen. For å lage et datoobjekt i Python kan du bruke den generelle syntaksen datetime.date(,,). Her er et eksempel på hvordan du oppretter 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å tipsbilk.net Python-kompilatoren for å teste. Eller installer Python på datamaskinen din.

Som vist ovenfor, når du skriver ut datoen, er den formatert i formatet ÅÅÅÅ-MM-DD for datoer.

Merk: Pass på å spesifisere måneden som et heltall uten innledende nuller. Det er sannsynlig at du er vant til å legge til en innledende null i måneden når du skriver ned datoer.

  Slik deaktiverer du Siri-forslag på iPhone-låseskjermen

For eksempel, for å spesifisere en dato i juni, den 6. måneden i året: bruk 6 og ikke 06.

Prøv for eksempel å kjøre følgende kodebit – der måneden har blitt nevnt som 03 i stedet for bare 3. Du vil se at den gir en syntaksfeil 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

La oss nå se hvordan du lager et tidsobjekt i Python.

Hvordan lage et tidsobjekt i Python

For å lage et tidsobjekt, la oss importere tidsklassen. Ethvert Python-tidsobjekt kan opprettes ved å bruke tidsklassen ved å spesifisere følgende klasseattributter: time, minutt, sekund og mikrosekund.

Alle disse attributtene er imidlertid valgfrie. Hvis du ikke spesifiserer et bestemt attributt, for eksempel for det andre, er det satt til 0 som standard.

Følgende kodebit viser hvordan du kan opprette et tidsobjekt time1. Som med datoobjektet kan du skrive ut tidsobjektet for å se det formaterte klokkeslettet.

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

# Output: 13:27:45.004600

Hvordan lage et datetime-objekt i Python

Som du kan se, har datoobjektet ingen informasjon om klokkeslettet. Og tidsobjektet inneholder ikke informasjon om datoen.

I praksis trenger du imidlertid både dato- og klokkeslettinformasjon. Så det anbefales å bruke datetime-klassen i stedet.

Du kan få tilgang til datetime-klassen og opprette 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

La oss nå lage et annet datetime-objekt dt2 uten det andre attributtet. Du kan se at den er satt til 0 – standardverdien.

dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)

# Output: 2022-06-30 14:28:00

Så langt har du lært hvordan du lager tidsstempler i Python – som datoer, klokkeslett og datotider. Det er nå på tide å se hvordan du kan beregne forskjellen mellom to tidsstempler.

Gå over til neste seksjon for å finne ut.

Hvordan bruke timedelta-objekt i Python

I Python angir timedelta et tidsrom. Det er forskjellen mellom to dato-, klokkeslett- eller datetime-objekter.

  Eat Your Greens analyserer hva som er på tallerkenen din fra et bilde [Paid]

Hvis du legger til eller trekker fra to dato-, klokkeslett- eller datetime-objekter, får du et timedelta-objekt. Dette timedelta-objektet har nyttige attributter og metoder som kan hjelpe med å beregne tidsforskjellen.

La oss gå videre og beregne forskjellen mellom de to datetime-objektene 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 kodebiten ovenfor kan du se at tdelta-variabelen holder tidsforskjellen mellom dt1 og dt2. Og typen tdelta er bekreftet til å være av klassen timedelta ved å bruke Pythons innebygde type() funksjon.

La oss nå kode et annet eksempel.

Hvordan finne tidsforskjellen mellom to datoer

La oss ta et enkelt, men interessant eksempel.

Problem: Å beregne tidsforskjellen mellom gjeldende dato (i dag) og bursdagen din.
For å gjøre dette, sett i dag som det første tidsstempelet, og bursdagen din som det andre tidsstempelet.

Som et første trinn, la oss lage to datetime-objekter:

  • en for i dag, la oss kalle det i dag, og
  • en annen til bursdagen din, la oss kalle det bursdag

Datetime-klassen har metoden now() som gir deg gjeldende lokale dato og klokkeslett. Så la oss bruke det i dag – vår referansedato.

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

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

I koden nedenfor, bytt ut bday med bursdagen din for å beregne tiden som er igjen til bursdagen din i år.

Hvis du leser dette etter at bursdagen din har passert, kan du gjerne sette bday til neste bursdag.

bday = datetime.datetime(2022,8,30,11,59)
print(bday)

# Sample Output: 2022-08-30 11:59:00

Det neste trinnet er å beregne time_diff som er et timedleta-objekt, som forklart tidligere. Bare trekk i dag fra fødselsdagen din, og du vil ha tidsforskjellen.

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

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

For å vite antall dager igjen, bruk days-attributtet på time_diff, som vist:

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

# Output
Your birthday is in 220 days.

Hvordan finne tidsforskjell i sekunder

La oss nå beregne hvor mange sekunder unna bursdagen din er.

  Databasemodellering og -design er enkelt med disse 8 verktøyene

For å beregne den totale tidsforskjellen i sekunder, bruk total_seconds()-metoden 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.

Vel, det er for lang ventetid!

Når det er sagt, vet du nå hvordan du beregner tidsforskjellen mellom to tidsstempler i sekunder.

La oss nå gå tilbake til noen grunnleggende ting og skrive ned følgende. Et døgn består av 24 timer, en time er 60 minutter lang, og 60 sekunder utgjør et minutt.

Dette er oppsummert i bildet nedenfor:

Timer, minutter og sekunder

Så for å konvertere fra sekunder til minutter, timer og dager, kan du bruke følgende tabell og dele på den tilsvarende konverteringsfaktoren.

Tidsomregningstabell

I de neste avsnittene, la oss konvertere tidsforskjellen i sekunder til minutter og timer.

Hvordan finne tidsforskjell i minutter

For å få tidsforskjellen i minutter trenger du bare å dele det totale antallet sekunder på 60.

La oss dele tsecs med 60, og lagre det i en variabel kalt tmins, slik:

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

# Output
Your birthday is 316966.0021236 minutes away.

Hvordan finne tidsforskjell i timer

Nå som du har beregnet tidsforskjellen i minutter, kan du dele den med en faktor på 60 for å få forskjellen i timer. Eller du kan dele det totale antallet 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 nå lært hvordan du beregner tidsforskjellen i hvilken som helst enhet du velger.

Konklusjon

I denne opplæringen har du lært hvordan du:

  • opprette og jobbe med datoer og klokkeslett ved hjelp av Pythons datetime-modul,
  • bruk timedelta-objekter for å få et tidsrom, eller tidsforskjell, og
  • beregne tidsforskjellen i sekunder, minutter og timer.

Håper du fant denne veiledningen nyttig. Nå som du vet alt om å beregne tidsforskjell i Python, er det på tide å øve ferdighetene dine.

Lykke til med læring og koding!

Lær hvordan du skriver lik eller ikke lik kode eller lag et slangespill i python her.