Datumhantering i Python
Den här artikeln förklarar datumhantering i Python.
YouTube Video
Datumhantering i Python
Datumhantering i Python använder främst modulen datetime
. Den här modulen tillhandahåller olika klasser och funktioner för att hantera datum och tid.
Nedan följer några exempel på grundläggande datumhantering med hjälp av modulen datetime
.
Hämta Datum och Tid
Du kan hämta det aktuella datumet och tiden så här. datetime.now()
och datetime.today()
returnerar nästan samma resultat, men det kan finnas skillnader i hur de hanterar tidszoner.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
- Den här koden hämtar och visar det aktuella datumet och tiden, samt endast dagens datum.
Skapa Specifika Datum och Tider
Du kan skapa ett specifikt datum och tid så här.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
- Den här koden skapar och visar det angivna datumet och tiden (7 november 2023, 10:30:45).
Formatera Datum
Datumformatering kan göras så här.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
- Den här koden hämtar det aktuella datumet och tiden, formaterar det till det angivna formatet med
strftime
, och visar det.
Datumformatssträngar
%Y
: År (4 siffror)%m
: Månad (01 till 12)%d
: Dag (01 till 31)%H
: Timme (00 till 23)%M
: Minut (00 till 59)%S
: Sekund (00 till 59)
Tolka datumsträngar
Du kan konvertera en sträng som representerar ett datum till ett datetime
-objekt.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
- Den här koden konverterar ett datum representerat som en sträng till ett
datetime
-objekt med hjälp avstrptime()
och visar det.
Datumräkning
Datumaritmetik kan utföras så här.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
- Den här koden använder
timedelta
för att lägga till eller dra ifrån dagar och tider från det aktuella datumet och tiden, och beräknar samt visar datumet och tiden för imorgon, för en vecka sedan och om två timmar.
Hantering av tidszoner
Du kan också hantera tidszoner med datetime
-modulen.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
datetime
returnerar som standard en 'naiv datetime' (utan tidszonsinformation). Du kan explicit hantera tidszoner genom att använda klassentimezone
ellerzoneinfo
.
Date-klass och time-klass
Med datetime
-modulen kan du också hantera enbart datum eller enbart tider.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
date
-klassen hanterar endast datum ochtime
-klassen hanterar endast tider.
Konvertering mellan datetime
och timestamp
Konvertering mellan UNIX-tidsstämplar och datetime
-objekt är möjlig. Här avser en UNIX-tidsstämpel antalet sekunder som passerat sedan den 1 januari 1970.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
- Den här koden konverterar det aktuella datumet och tiden till en UNIX-tidsstämpel och använder sedan funktionen
fromtimestamp()
för att konvertera tidsstämpeln tillbaka till ettdatetime
-objekt.
Vanliga fallgropar
När du använder datetime
-modulen bör du vara medveten om följande punkter.
datetime.now()
tar inte hänsyn till tidszoner, så för internationalisering måste du uttryckligen användatimezone.utc
.- Var noga med att inte blanda ihop
%m
(månad) och%M
(minut) i formatsträngar.
Sammanfattning
Modulen datetime
erbjuder även många andra funktioner för flexibel hantering av datum och tid. Dessutom finns klasser som date
, time
och timedelta
, som är specialiserade för specifika operationer.
Genom att använda andra bibliotek kan man också göra mer avancerad datumhantering. Till exempel är pandas
specialiserat på att hantera tidsseriedata, medan dateutil
passar för komplex datumparsning. Dessutom är biblioteket arrow
också användbart.
Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.