Hoe een String omzetten naar een datetime of time Object in Python

Introductie

De Python datetime en time modules bevatten beide een strptime() klasse methode om strings naar objecten te converteren.

In dit artikel zul je strptime() gebruiken om strings om te zetten in datetime en struct_time() objecten.

Implementeer uw Python applicaties vanuit GitHub met behulp van DigitalOcean App Platform. Laat DigitalOcean zich richten op het schalen van uw app.

Een String omzetten naar een datetime object met behulp van datetime.strptime()

De syntax voor de datetime.strptime() methode is:

datetime.strptime(date_string, format)

De datetime.strptime() methode retourneert een datetime object dat overeenkomt met de date_string geparseerd door de format. Beide argumenten zijn vereist en moeten strings zijn.

Voor details over de format directives die worden gebruikt in datetime.strptime(), raadpleeg de strftime() en strptime() Format Codes in de Python documentatie.

Converteer String naar datetime.datetime() Object Voorbeeld

Het volgende voorbeeld converteert een datum- en tijdreeks naar een datetime.datetime() object en geeft de klassenaam en waarde van het resulterende object weer:

from datetime import datetime

datetime_str = '09/19/22 13:55:26'

datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')

print(type(datetime_object))
print(datetime_object)  # afgedrukt in standaardformaat

De uitvoer is:

<class 'datetime.datetime'>
2022-09-19 13:55:26

Converteer String naar datetime.date() Object Voorbeeld

Het volgende voorbeeld converteert een datumreeks naar een datetime.date() object en geeft het klassetype en de waarde van het resulterende object weer:

from datetime import datetime

date_str = '09-19-2022'

date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object)  # afgedrukt in standaardformaat

De uitvoer is:

<class 'datetime.date'>
2022-09-19

Converteer String naar datetime.time() Object Voorbeeld

Het volgende voorbeeld converteert een tijdsreeks naar een datetime.time()-object en drukt het klassetype en de waarde van het resulterende object af:

from datetime import datetime

time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)

De uitvoer is:

<class 'datetime.time'>
13:55:26

Converteer String naar datetime.datetime()-Object met Locatie Voorbeeld

Het volgende voorbeeld converteert een datumreeks in Duitse locatie naar een datetime.datetime()-object en drukt het klassetype en de waarde van het resulterende object af:

from datetime import datetime
import locale

locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag'  # de_DE-locatie
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)

De uitvoer is:

<class 'datetime.datetime'>
2022-12-16 00:00:00

Merk op dat het resulterende object de weekdagnaam niet bevat uit de invoerreeks, omdat een datetime.datetime()-object de weekdag alleen als een decimaal getal bevat.

Converteer een String naar een struct_time()-Object met behulp van time.strptime()

De syntaxis voor de time.strptime()-methode is:

time.strptime(time_string[, format])

De methode time.strptime() retourneert een object van het type time.struct_time() dat overeenkomt met de door time_string geparseerde format. De time_string is verplicht en beide argumenten moeten tekenreeksen zijn. Als format niet wordt opgegeven, is de standaard:

'%a %b %d %H:%M:%S %Y'

Dit komt overeen met het formaat dat wordt geretourneerd door de functie ctime().

De opmaakdirectieven zijn hetzelfde voor time.strptime() en time.strftime(). Leer meer over de opmaakdirectieven voor de module time in de Python-documentatie.

Zet String om naar struct_time() Object met Opgegeven Formaat Voorbeeld

Het volgende voorbeeld zet een tijdsreeks om naar een time.struct_time() object door het formaat-argument op te geven, en geeft de waarde van het resulterende object weer:

import time

time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)

De uitvoer is:

A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)

Zoals te zien is in de uitvoer, gebruikt de methode strptime() bij het omzetten van een tekenreeks naar een time.struct_time() object aanduidingswaarden voor alle opmaakdirectieven die niet zijn gedefinieerd in het formaat-argument.

Converteer String naar struct_time() Object Gebruikmakend van Standaard Formaat Voorbeeld

Als je geen formaat argument opgeeft wanneer je een tijdsreeks omzet naar een time.struct_time() object, dan wordt het standaardformaat gebruikt en treedt er een fout op als de invoerreeks niet exact overeenkomt met het standaardformaat van:

 '%a %b %d %H:%M:%S %Y'

Het volgende voorbeeld zet een tijdsreeks om naar een time.struct_time() object zonder formaat argument te geven, en drukt de waarde van het resulterende object af:

import time

# standaardformaat - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)

De uitvoer is:

A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)

Zoals te zien is in de uitvoer, wanneer je een string omzet naar een time.struct_time() object, gebruikt de strptime() methode plaatshouders voor eventuele opmaakdirectives die niet zijn gedefinieerd in het formaat argument of door het standaardformaat als er geen formaat wordt opgegeven.

Problemen Oplossen met strptime() Fouten

Als de invoerreeks niet kan worden geanalyseerd door strptime() met de opgegeven indeling, wordt een ValueError gegenereerd. Je kunt het try-blok gebruiken om te testen op analysefouten, samen met het except-blok om de resultaten af te drukken. De ValueError-meldingen die je krijgt bij het gebruik van de methode strptime(), verklaren duidelijk de hoofdoorzaken van de analysefouten. Het volgende voorbeeld toont enkele veelvoorkomende fouten, zoals extra gegevens en een indeling ongelijkheid:

from datetime import datetime
import time

datetime_str = '09/19/18 13:55:26'

try:
    datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
    print('ValueError 1:', ve1)

time_str = '99::55::26'

try:
    time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
    print('ValueError 2:', ve2)

De output is:

ValueError 1: unconverted data remains:  13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'

Conclusie

In deze tutorial heb je datum- en tijdreeksen omgezet naar datetime en time-objecten met behulp van Python. Ga verder met leren met meer Python-tutorials.

Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime