Datemanipulation i Python

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

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, og time-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 et datetime-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 bruge timezone.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.

YouTube Video