Datemanipulation i Python
Denne artikel forklarer datemanipulation i Python.
YouTube Video
Datemanipulation i Python
Datemanipulation i Python bruger primært datetime
-modulet. Dette modul tilbyder forskellige klasser og funktioner til at manipulere datoer og tider.
Nedenfor er nogle eksempler på grundlæggende datemanipulation ved hjælp af datetime
-modulet.
Hentning af dato og tid
Du kan få den aktuelle dato og tid således. datetime.now()
og datetime.today()
returnerer næsten det samme resultat, men der kan være forskelle i, hvordan de håndterer 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()}")
- Denne kode henter og viser den aktuelle dato og tid, samt kun dagens dato.
Oprettelse af specifikke datoer og tidspunkter
Du kan oprette en specifik dato og tid således.
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}")
- Denne kode opretter og viser den angivne dato og tid (7. november 2023, 10:30:45).
Formatering af datoer
Datoformatering kan gøres således.
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}")
- Denne kode henter den aktuelle dato og tid, formaterer det til det angivne format ved hjælp af
strftime
, og viser det.
Datoformat-strenge
%Y
: År (4 cifre)%m
: Måned (01 til 12)%d
: Dag (01 til 31)%H
: Time (00 til 23)%M
: Minut (00 til 59)%S
: Sekund (00 til 59)
Parsing af dato-strenge
Du kan konvertere en streng, der repræsenterer en dato, til et 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}")
- Denne kode konverterer en dato repræsenteret som en streng til et
datetime
-objekt ved hjælp afstrptime()
og viser det.
Datoarithmetik
Datoaritmetik kan udføres således.
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}")
- Denne kode bruger
timedelta
til at lægge dage og timer til eller trække dem fra den aktuelle dato og tid, og beregner og viser dato og tid for i morgen, for en uge siden og for to timer senere.
Håndtering af tidszoner
Du kan også håndtere tidszoner med datetime
-modulet.
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
returnerer som standard en 'naiv datetime' (uden tidszoneinformation). Du kan eksplicit håndtere tidszoner ved at brugetimezone
-klassen ellerzoneinfo
.
Dato-klassen og tid-klassen
Med datetime
-modulet kan du også kun håndtere datoer eller kun 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 håndterer kun datoer, ogtime
-klassen håndterer kun tider.
Konvertering mellem datetime
og timestamp
Konvertering mellem UNIX-tidsstempler og datetime
-objekter er mulig. Her refererer et UNIX-tidsstempel til antallet af sekunder, der er gået siden 1. januar 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}")
- Denne kode konverterer den aktuelle dato og tid til et UNIX-tidsstempel og bruger derefter funktionen
fromtimestamp()
til at konvertere tidsstemplet tilbage til etdatetime
-objekt.
Almindelige faldgruber
Når du bruger datetime
-modulet, bør du være opmærksom på følgende punkter.
datetime.now()
tager ikke højde for tidszoner, så for internationalisering skal du eksplicit brugetimezone.utc
.- Vær opmærksom på ikke at forveksle
%m
(måned) og%M
(minut) i formatstrenge.
Sammendrag
datetime
-modulet tilbyder også mange andre funktioner til fleksibel manipulation af dato og tid. Derudover er klasser som date
, time
og timedelta
tilgængelige, specialiseret til specifikke operationer.
Brug af andre biblioteker muliggør også mere avanceret datemanipulation. For eksempel er pandas
specialiseret i at håndtere tidsseriedata, mens dateutil
er velegnet til kompleks parsing af datoer. Desuden er arrow
-biblioteket også nyttigt.
Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.