Hoe een string omzetten naar datum en tijd in Python
Datetime-objecten maken eenvoudige tijdberekeningen mogelijk, waaronder het optellen of aftrekken van intervallen. Het omzetten van strings naar datetime-objecten is essentieel voor het nauwkeurig organiseren, analyseren en weergeven van tijdgegevens in Python.
Hoe werkt het omzetten van strings naar datetime in Python?
Het converteren van een Python-string naar datetime houdt in dat een tekstreeks, die een datum en/of tijd bevat, wordt omgezet in een datetime-object. Datetime is een Python-gegevensstructuur die is ontworpen om datum- en tijdinformatie te verwerken en aan te passen. Het converteren van strings naar datetime is vaak nodig om datum- en tijdgegevens te verwerken die in stringformaat worden weergegeven.
De gegevens worden omgezet naar een formaat dat onder andere kan worden gebruikt om berekeningen uit te voeren, datums te vergelijken of tijdinformatie op te maken. Methoden voor het samenvoegen van expressies met behulp van Python-stringformaat kunnen ook nuttig zijn bij het beheren van datetime-objecten.
Hoe strings omzetten naar datetime-objecten in Python
Er zijn verschillende functies en modules, zoals de datetime library en de strptime() method, die u kunt gebruiken om strings om te zetten naar datetime-objecten en vice versa.
strptime()
De methode strptime() (string parse time) uit de bibliotheek datetime wordt gebruikt om een string om te zetten in een Python datetime-object. Er zijn twee argumenten nodig: de string die moet worden geparseerd en het datum-/tijdformaat van de string.
datetime.strptime(date_string, format)pythondatetime.datetime()
Met de strptime() methode kan een tekenreeks worden omgezet in een datetime.datetime, waarbij rekening wordt gehouden met een specifieke datum-/tijdnotatie.
from datetime import datetime
date_string = '2023-10-30 12:00:00'
date_object = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(date_object) # Output: 2023-10-30 12:00:00pythonIn dit voorbeeld wordt date_string gespecificeerd als '2023-10-30 12:00:00' en definieert het formaat '%Y-%m-%d %H:%M:%S' de volgorde en hoe de datum en tijd in de tekenreeks moeten worden weergegeven. De methode strptime() interpreteert de tekenreeks op basis van dit formaat en genereert een datetime.datetime, dat vervolgens wordt opgeslagen in de variabele date_object.
Dit is wat '%Y-%m-%d %H:%M:%S' betekent:
%Y: Viercijferig jaartal%m: Twee cijfers voor de maand%d: Twee cijfers voor de dag%H: Uur (24-uursnotatie)%M: Minuten%S: Seconden
datetime.time()
Door strings om te zetten in een datetime.time, kun je tijden zonder datum weergeven. Dit kan worden gedaan met behulp van de strptime() uit de datetime, of door een tijdstring op te splitsen in uren, minuten en seconden.
from datetime import datetime
time_string = '14::30::00'
time_object = datetime.strptime(time_string, '%H::%M::%S').time()
print(time_object) # Output: 14:30:00python'%H:%M:%S' staat voor het formaat uren:minuten:seconden. De methode strptime() interpreteert de tijdstring volgens dit formaat en maakt een datetime.time aan.
datetime.date()
Als alternatief kunt u een tekenreeks omzetten in een datetime.date door de strptime() uit de datetime te gebruiken, of door de datumtekenreeks handmatig op te splitsen in jaar-, maand- en dagcomponenten.
from datetime import datetime
date_string = '2023-11-30'
date_object = datetime.strptime(date_string, '%Y-%m-%d').date()
print(date_object) # Output: 2023-11-30python'%Y-%m-%d' is het jaar-maand-dagformaat. De strptime() analyseert de datumstring en maakt een datetime.date aan.
Hoe strptime() fouten op te lossen
Wanneer u de strptime() -methode gebruikt om strings om te zetten naar datetime-objecten in Python, kunt u fouten tegenkomen, vooral als het opgegeven formaat niet overeenkomt met het formaat van de invoerstring. Hier volgen enkele veelvoorkomende fouten en manieren om ze op te lossen:
ValueError: time data '...' does not match format '...': Deze fout treedt op als de invoerreeks niet overeenkomt met het opgegeven formaat. Controleer of het juiste formaatpatroon is gebruikt instrptime().ValueError: unconverted data remains: Deze foutmelding wordt weergegeven als er na verwerking van de tekenreeks nog niet-geïnterpreteerde gegevens overblijven. Zorg ervoor dat het formaatpatroon alle delen van de invoertekenreeks omvat.TypeError: strptime() argument 1 must be str, not ...: Dit kan gebeuren als de parameter die is doorgegeven aanstrptime()geen tekenreeks is. Zorg ervoor dat de opgegeven waarde een tekenreeks is die het datum-/tijdformaat bevat.
U moet ervoor zorgen dat het formaatpatroon alle delen van de invoerreeks (jaar, maand, dag, tijd, enz.) correct interpreteert. Het is ook belangrijk om rekening te houden met mogelijke verschillen in scheidingstekens, hoofdletters en andere details tussen het formaatpatroon en de invoerreeks.