Datummanipulatie in Python

Datummanipulatie in Python

Dit artikel legt uit hoe datums in Python worden gemanipuleerd.

YouTube Video

Datummanipulatie in Python

Datummanipulatie in Python maakt voornamelijk gebruik van de module datetime. Deze module biedt verschillende klassen en functies om datums en tijden te manipuleren.

Hieronder staan enkele voorbeelden van basisdatummanipulatie met behulp van de module datetime.

Datum en tijd ophalen

U kunt de huidige datum en tijd als volgt verkrijgen. datetime.now() en datetime.today() geven bijna hetzelfde resultaat, maar er kunnen verschillen zijn in hoe ze tijdzones behandelen.

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()}")
  • Deze code haalt de huidige datum en tijd op en toont deze, evenals alleen de datum van vandaag.

Specifieke datums en tijden maken

U kunt een specifieke datum en tijd als volgt aanmaken.

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}")
  • Deze code maakt de gespecificeerde datum en tijd aan en toont deze (7 november 2023, 10:30:45).

Datums formatteren

Datumopmaak kan als volgt worden gedaan.

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}")
  • Deze code verkrijgt de huidige datum en tijd, formatteert deze met het opgegeven formaat via strftime en toont het resultaat.

Datumopmaakreeksen

  • %Y: Jaar (4 cijfers)
  • %m: Maand (01 tot 12)
  • %d: Dag (01 tot 31)
  • %H: Uur (00 tot 23)
  • %M: Minuut (00 tot 59)
  • %S: Seconde (00 tot 59)

Datumreeksen ontleden

U kunt een tekenreeks die een datum voorstelt omzetten in een datetime-object.

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}")
  • Deze code zet een datum als tekenreeks om naar een datetime-object met strptime() en toont het resultaat.

Datumrekenkunde

Datumrekenen kan als volgt worden uitgevoerd.

 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}")
  • Deze code gebruikt timedelta om dagen en tijden op te tellen of af te trekken van de huidige datum en tijd, waarmee de datum en tijd voor morgen, een week geleden en over twee uur worden berekend en getoond.

Tijdzones verwerken

U kunt ook tijdzones verwerken met de datetime-module.

 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 retourneert standaard een 'naive datetime' (zonder tijdzone-informatie). U kunt tijdzones expliciet verwerken met de timezone-klasse of zoneinfo.

De date-klasse en de time-klasse

Met de datetime-module kunt u ook alleen datums of alleen tijden verwerken.

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}")
  • De date-klasse verwerkt alleen datums, en de time-klasse alleen tijden.

Conversie tussen datetime en timestamp

Conversie tussen UNIX-timestamps en datetime-objecten is mogelijk. Hier verwijst een UNIX-timestamp naar het aantal seconden sinds 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}")
  • Deze code zet de huidige datum en tijd om naar een UNIX-timestamp en gebruikt vervolgens de functie fromtimestamp() om die timestamp terug om te zetten naar een datetime-object.

Veelvoorkomende valkuilen

Bij het gebruik van de datetime-module dient u op de volgende punten te letten.

  • datetime.now() houdt geen rekening met tijdzones, dus voor internationalisering moet u expliciet timezone.utc gebruiken.
  • Let op dat u %m (maand) en %M (minuut) niet verwart in opmaakreeksen.

Samenvatting

De module datetime biedt ook veel andere functies voor flexibele datumen tijdmanipulatie. Bovendien zijn er klassen zoals date, time en timedelta die gespecialiseerd zijn in specifieke bewerkingen.

Het gebruik van andere bibliotheken maakt ook geavanceerdere datummanipulatie mogelijk. Zo is pandas gespecialiseerd in het verwerken van tijdseriedata, terwijl dateutil geschikt is voor complexe datumontleding. Ook is de bibliotheek arrow ook nuttig.

Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.

YouTube Video