Beregn tidsforskjeller i Python: En enkel guide

Beregn Tidsforskjeller i Python

Når du jobber med datoer og klokkeslett i Python, er det ofte nødvendig å kalkulere tidsforskjellen. Denne artikkelen vil veilede deg gjennom prosessen med å finne differansen mellom to tidsstempler, uttrykt i timer, minutter og sekunder.

Etter å ha lest denne artikkelen vil du ha lært:

  • Hvordan bruke Pythons `datetime`-modul for å håndtere datoer og klokkeslett.
  • Hva `timedelta`-objekter er og hvorfor de er nyttige.
  • Hvordan beregne tidsforskjellen mellom to tidsstempler – i timer, minutter og sekunder.

La oss begynne.

Bruke Pythons `datetime`-modul

For å håndtere datoer og klokkeslett i Python, bruker du `datetime`-modulen. Denne modulen er inkludert i standardbiblioteket til Python, så du kan importere den direkte i ditt arbeidsmiljø:

import datetime

For å beregne en tidsforskjell trenger du to ulike tidsstempler. Du kan velge å opprette:

  • To datoobjekter
  • To tidsobjekter
  • En kombinasjon av både dato og klokkeslett – `datetime`-objekter

Slik oppretter du et datoobjekt i Python

La oss importere `date`-klassen fra `datetime`-modulen. For å lage et datoobjekt i Python, bruk syntaksen `datetime.date(<år>, , )`. Her er et eksempel på hvordan du lager et datoobjekt kalt `date1`:

from datetime import date
date1 = datetime.date(2022, 3, 27)
print(date1)
# Output: 2022-03-27

Du kan teste denne koden i en online Python-kompilator, eller ved å installere Python på din datamaskin.

Som vist over, vil datoen formateres som ÅÅÅÅ-MM-DD når du skriver den ut.

Viktig: Pass på å spesifisere måneden som et heltall uten innledende nuller. Du er kanskje vant til å bruke en innledende null når du skriver datoer, men det er ikke nødvendig i Python.

For eksempel, for å angi juni, den 6. måneden, bruk 6, ikke 06.

Prøv følgende kodebit der måneden er oppgitt som 03 istedenfor 3. Du vil se at det gir en syntaksfeil:

date1 = datetime.date(2022, 03, 27)
print(date1)
# Error Message
#  File "", line 1
#     date1 = datetime.date(2022,03,27)
#                                 ^
# SyntaxError: invalid token

La oss se hvordan vi lager et tidsobjekt i Python.

Slik oppretter du et tidsobjekt i Python

For å lage et tidsobjekt, importerer vi `time`-klassen. Et Python-tidsobjekt kan opprettes ved å bruke `time`-klassen, hvor du spesifiserer følgende attributter: `time`, `minutt`, `sekund`, og `mikrosekund`.

Disse attributtene er valgfrie. Hvis du ikke oppgir en verdi, for eksempel for `sekund`, vil den settes til 0 som standard.

Følgende kodebit viser hvordan du kan opprette et tidsobjekt kalt `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

Slik oppretter du et `datetime`-objekt i Python

Som du ser, inneholder datoobjektet ikke informasjon om klokkeslettet, og tidsobjektet inneholder ikke informasjon om datoen.

I praksis trenger du ofte begge deler. Derfor er det ofte best å bruke `datetime`-klassen i stedet.

Du kan bruke `datetime`-klassen til å opprette `datetime`-objekter 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 lage et annet `datetime`-objekt kalt `dt2` uten sekund-attributtet. Du vil se at det settes til 0 – standardverdien.

dt2 = datetime.datetime(2022, 6, 30, 14, 28)
print(dt2)
# Output: 2022-06-30 14:28:00

Nå har du lært hvordan du oppretter tidsstempler i Python – som datoer, klokkeslett og datotider. La oss se hvordan du kan beregne forskjellen mellom to tidsstempler.

Bruke `timedelta`-objekter i Python

I Python representerer et `timedelta`-objekt en tidsperiode. Det er forskjellen mellom to dato-, klokkeslett-, eller `datetime`-objekter.

Når 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 deg med å beregne tidsforskjellen.

La oss 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'>

Koden over viser at variabelen `tdelta` inneholder tidsforskjellen mellom `dt1` og `dt2`. Typen til `tdelta` bekreftes å være `timedelta` ved hjelp av Pythons innebygde `type()`-funksjon.

La oss se på et annet eksempel.

Finne tidsforskjellen mellom to datoer

La oss se på et enkelt, men interessant eksempel.

Problem: Beregn tidsforskjellen mellom dagens dato og din fødselsdag.
For å gjøre dette, la oss sette i dag som det første tidsstempelet, og bursdagen din som det andre tidsstempelet.

La oss opprette to `datetime`-objekter:

  • Ett for i dag, som vi kaller `today`.
  • Ett for bursdagen din, som vi kaller `bday`.

`Datetime`-klassen har en metode som heter `now()` som gir deg gjeldende dato og klokkeslett. La oss bruke dette for `today`:

today = datetime.datetime.now()
print(today)
# Sample Output: 2022-01-22 09:10:18.489538

I koden nedenfor, bytt ut `bday` med din egen bursdag for å beregne tiden som gjenstår til din fødselsdag i år.

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

bday = datetime.datetime(2022, 8, 30, 11, 59)
print(bday)
# Sample Output: 2022-08-30 11:59:00

Neste steg er å beregne `time_diff`, som er et `timedelta`-objekt. Bare trekk `today` fra `bday`, 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 å finne antall dager som gjenstår, bruk attributtet `days` i `time_diff`:

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

Finne tidsforskjell i sekunder

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

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

Det er en lang ventetid!

Uansett, nå vet du hvordan du beregner tidsforskjellen mellom to tidsstempler i sekunder.

La oss gå tilbake til noen grunnleggende ting: Et døgn har 24 timer, en time er 60 minutter, og 60 sekunder utgjør ett minutt.

Dette er oppsummert i bildet nedenfor:

Timer, minutter og sekunder

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 seksjonene skal vi konvertere tidsforskjellen i sekunder til minutter og timer.

Finne tidsforskjell i minutter

For å finne tidsforskjellen i minutter trenger du bare å dele det totale antall sekunder med 60.

La oss dele `tsecs` med 60 og lagre det i en variabel som heter `tmins`:

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

Finne tidsforskjell i timer

Nå som du har beregnet tidsforskjellen i minutter, kan du dele den med 60 for å finne forskjellen i timer. Alternativt kan du 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.

Nå har du lært hvordan du beregner tidsforskjellen i hvilken som helst enhet du velger.

Konklusjon

I denne artikkelen har du lært hvordan du:

  • Oppretter og arbeider med datoer og klokkeslett ved hjelp av Pythons `datetime`-modul.
  • Bruker `timedelta`-objekter for å finne en tidsperiode, eller tidsforskjell.
  • Beregner tidsforskjellen i sekunder, minutter og timer.

Håper du syntes denne veiledningen var nyttig. Nå som du vet hvordan du beregner tidsforskjeller i Python, er det på tide å øve på ferdighetene dine.

Lykke til med læring og koding!

Lær hvordan du skriver lik eller ikke lik kode, eller hvordan du lager et slangespill i Python.