Datumhantering i Python

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 av strptime() 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 klassen timezone eller zoneinfo.

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 och time-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 ett datetime-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ända timezone.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.

YouTube Video