Python's strptime() beheersen voor nauwkeurige datum-parsing
Python strptime(): Strings converteren naar datetime-objecten
Deze gids laat zien hoe je datetime-objecten kunt aanmaken vanuit strings met behulp van Python's datetime.strptime()-methode, met praktische voorbeelden en een complete formatcode-referentie.
Video: Datums en tijden in Python
Bekijk de officiële Python-tutorial om je begrip van datetime-verwerking te verdiepen.
De strptime()-methode creëert een datetime-object vanuit een string die een opgegeven formaat volgt.
Let op: Niet elke string kan worden geparsed; de invoer moet exact overeenkomen met de formatcode.
Voorbeeld 1: Eenvoudige datumstring converteren
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type van date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type van date_object =", type(date_object))
Output:
date_string = 21 June, 2018 type van date_string = <class 'str'> date_object = 2018-06-21 00:00:00 type van date_object = <class 'datetime.datetime'>
Hoe strptime() werkt
De strptime()-klassemethode accepteert twee argumenten:
- De string die moet worden geparsed.
- De formatcode die de lay-out van de string beschrijft.
Op basis van deze invoer retourneert de methode een datetime-object dat hetzelfde moment in de tijd vertegenwoordigt.
In het bovenstaande voorbeeld betekent de formatcode %d %B, %Y:
%d– nul-gevulde dag van de maand (01‑31).%B– volledige maandnaam (Januari‑December).%Y– viercijferig jaar.
Voorbeeld 2: Ambigue datums parsen
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Aanname: dag/maand/jaar formaat
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Aanname: maand/dag/jaar formaat
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
Het programma produceert:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Complete lijst met formatcodes
De onderstaande tabel vat alle directives samen die je kunt gebruiken met strptime(). Voor de volledige documentatie, raadpleeg Python's officiële datetime-modulegids.
| Directive | Betekenis | Voorbeeld |
|---|---|---|
%a | Afgekorte weekday-naam. | Zo, Ma, ... |
%A | Volledige weekday-naam. | Zondag, Maandag, ... |
%w | Weekdag als decimaal getal. | 0, 1, ..., 6 |
%d | Dag van de maand (nul-gevuld). | 01, 02, ..., 31 |
%-d | Dag van de maand (geen padding). | 1, 2, ..., 30 |
%b | Afgekorte maandnaam. | Jan, Feb, ..., Dec |
%B | Volledige maandnaam. | Januari, Februari, ... |
%m | Maandnummer (nul-gevuld). | 01, 02, ..., 12 |
%-m | Maandnummer (geen padding). | 1, 2, ..., 12 |
%y | Jaar zonder eeuw (nul-gevuld). | 00, 01, ..., 99 |
%-y | Jaar zonder eeuw (geen padding). | 0, 1, ..., 99 |
%Y | Jaar met eeuw. | 2013, 2019, ... |
%H | Uur (24-uurs klok, nul-gevuld). | 00, 01, ..., 23 |
%-H | Uur (24-uurs klok, geen padding). | 0, 1, ..., 23 |
%I | Uur (12-uurs klok, nul-gevuld). | 01, 02, ..., 12 |
%-I | Uur (12-uurs klok, geen padding). | 1, 2, ..., 12 |
%p | Locale's AM of PM. | AM, PM |
%M | Minuut (nul-gevuld). | 00, 01, ..., 59 |
%-M | Minuut (geen padding). | 0, 1, ..., 59 |
%S | Seconde (nul-gevuld). | 00, 01, ..., 59 |
%-S | Seconde (geen padding). | 0, 1, ..., 59 |
%f | Microseconde (nul-gevuld). | 000000 – 999999 |
%z | UTC-offset (+HHMM of –HHMM). | |
%Z | Tijdzonenaam. | |
%j | Dag van het jaar (nul-gevuld). | 001, 002, ..., 366 |
%-j | Dag van het jaar (geen padding). | 1, 2, ..., 366 |
%U | Weeknummer (zondag eerst). | 00, 01, ..., 53 |
%W | Weeknummer (maandag eerst). | 00, 01, ..., 53 |
%c | Locale's datum & tijd. | Ma 30 Sep 07:06:05 2013 |
%x | Locale's datum. | 09/30/13 |
%X | Locale's tijd. | 07:06:05 |
%% | Letterlijk procentteken. | % |
Veelvoorkomende fout: ValueError
Als de string en formatcode niet overeenkomen, gooit strptime() een ValueError. Bijvoorbeeld:
from datetime import datetime
date_string = "12/11/2018" # Onjuist formaat – verwacht dag maand jaar
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
Dit levert:
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Aanbevolen lezing: Python strftime()
Python
- Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
- Python Datatypes onder de knie krijgen: Een praktische gids
- Python Operators onder de knie krijgen: Een uitgebreide gids
- Python Pass Statement onder de knie krijgen: Een praktische gids
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
- Python-iterators: hoe ze werken en hoe je je eigen maakt
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python Regular Expressions (re-module) – een praktische gids
- Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
- Python's time-module beheersen: functies, structs en praktische voorbeelden