Tid och datum
Objektet datetime
Pythons datetime
-modul innehåller funktionen now
, som returnerar ett datetime
-objekt med det nuvarande datumet och tidpunkten. Så här ser det normalt ut när man skriver ut ett datetime
-objekt:
from datetime import datetime
tid = datetime.now()
print(tid)
2020-10-13 12:46:49.311393
Du kan också definiera objektet själv:
from datetime import datetime
tid = datetime(1952, 12, 24)
print(tid)
1952-12-24 00:00:00
Tidpunkten är vid midnatt om vi inte själv definierar den.
Olika element i datetime
-objektet kan kommas åt på följande sätt:
from datetime import datetime
tid = datetime(1952, 12, 24)
print("Dag:", tid.day)
print("Månad:", tid.month)
print("År:", tid.year)
Dag: 24 Månad: 12 År: 1952
Tidpunkten under dagen kan också specificeras. Precisionen kan variera:
from datetime import datetime
tid1 = datetime(2020, 6, 30, 13, 00) # 30/6 2020 kl 13:00
tid2 = datetime(2020, 6, 30, 18, 45) # 30/6 2020 kl 18:45
Jämföra tider och räkna skillnaden mellan dem
De bekanta jämförelseoperatorerna fungerar också för datetime
-objekt:
from datetime import datetime
nu = datetime.now()
midsommar = datetime(2020, 6, 20)
if nu < midsommar:
print("Inte än midsommar")
elif nu == midsommar:
print("Trevlig midsommar!")
elif nu > midsommar:
print("Midsommaren kom och gick")
Midsommaren kom och gick
Skillnaden mellan två datetime
-objekt kan enkelt räknas med subtraktionsoperatorn:
from datetime import datetime
nu = datetime.now()
midsommar = datetime(2020, 6, 20)
skillnad = midsommar - nu
print("Det är ännu", skillnad.days, "dagar till midsommar")
Det är ännu 37 dagar till midsommar
Obs! Resultatet för en subtraktion med datetime
-objekt är ett timedelta
-objekt. Det är inte lika flexibelt som datetime
-objektet. Du kan till exempel komma åt antalet dagar i ett timedelta
-objekt, men inte antalet år, eftersom längden på ett år varierar. Ett timedelta
-objekt innehåller attributen days
, seconds
och microseconds
. Andra storheter kan ges som argument och de konverteras automatiskt till korrekt format.
Addition med datetime
- och timedelta
-objekt är också möjligt. Resultatet är ett datetime
-objekt där det specificerade antalet dagar (eller veckor, sekunder o.s.v.) är adderade:
from datetime import datetime, timedelta
midsommar = datetime(2020, 6, 20)
vecka = timedelta(days=7)
vecka_senare = midsommar + vecka
print("En vecka efter midsommar är", vecka_senare)
lang_tid = timedelta(weeks=32, days=15)
print("32 veckor och 15 dagar efter midsommar är", midsommar + lang_tid)
En vecka efter midsommar är 2020-06-27 00:00:00 32 veckor och 15 dagar efter midsommar är 2021-02-14 00:00:00
Vi kollar ännu hur det ser ut med högre precision:
nu = datetime.now()
midnatt = datetime(2020, 6, 30)
skillnad = midnatt-nu
print(f"Det är ännu {skillnad.seconds} sekunder till midnatt")
Det är ännu 8188 sekunder till midnatt
Formatera tid och datum
Modulen datetime
innehåller metoden strftime
som kan användas för att formatera hur ett datum representeras som sträng. Till exempel följande kodsnutt kommer att skriva ut det nuvarande datumet i formatet dd.mm.åååå
och därefter datumet och tiden i ett annat format:
from datetime import datetime
tid = datetime.now()
print(tid.strftime("%d.%m.%Y"))
04.02.2020
Tidsformatering använder specifika tecken för att indikera ett visst format. Här är ett antal tecken (flera finns i Pythons dokumentation):
Förkortning | Betydelse |
---|---|
%d | dag (01–31) |
%m | månad (01–12) |
%Y | år (fyra siffor) |
%H | timme (24 timmars format) |
%M | minut (00–59) |
%S | sekund (00–59) |
Du kan också specificera vilket tecken som används för att skilja elementen i ett datum, så som du såg i exemplet ovan.
Formatering för datetime
fungerar också åt det andra hållet, det vill säga om du tar emot ett datum som en sträng från en användare och vill få det i datetime
-format. Använd då metoden strptime
:
from datetime import datetime
syote = input("Ange din födelsetid i formatet dd.mm.åååå: ")
tid = datetime.strptime(syote, "%d.%m.%Y")
if tid < datetime(2000, 1, 1):
print("Du föddes på förra årtusendet")
else:
print("Du föddes på det här årtusendet")
Ange din födelsetid i formatet dd.mm.åååå: 5.11.1986 Du föddes på förra årtusendet
Log in to view the quiz
Se dina poäng genom att klicka på cirkeln nere till höger av sidan.