Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

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.

DirectiveBetekenisVoorbeeld
%aAfgekorte weekday-naam.Zo, Ma, ...
%AVolledige weekday-naam.Zondag, Maandag, ...
%wWeekdag als decimaal getal.0, 1, ..., 6
%dDag van de maand (nul-gevuld).01, 02, ..., 31
%-dDag van de maand (geen padding).1, 2, ..., 30
%bAfgekorte maandnaam.Jan, Feb, ..., Dec
%BVolledige maandnaam.Januari, Februari, ...
%mMaandnummer (nul-gevuld).01, 02, ..., 12
%-mMaandnummer (geen padding).1, 2, ..., 12
%yJaar zonder eeuw (nul-gevuld).00, 01, ..., 99
%-yJaar zonder eeuw (geen padding).0, 1, ..., 99
%YJaar met eeuw.2013, 2019, ...
%HUur (24-uurs klok, nul-gevuld).00, 01, ..., 23
%-HUur (24-uurs klok, geen padding).0, 1, ..., 23
%IUur (12-uurs klok, nul-gevuld).01, 02, ..., 12
%-IUur (12-uurs klok, geen padding).1, 2, ..., 12
%pLocale's AM of PM.AM, PM
%MMinuut (nul-gevuld).00, 01, ..., 59
%-MMinuut (geen padding).0, 1, ..., 59
%SSeconde (nul-gevuld).00, 01, ..., 59
%-SSeconde (geen padding).0, 1, ..., 59
%fMicroseconde (nul-gevuld).000000 – 999999
%zUTC-offset (+HHMM of –HHMM).
%ZTijdzonenaam.
%jDag van het jaar (nul-gevuld).001, 002, ..., 366
%-jDag van het jaar (geen padding).1, 2, ..., 366
%UWeeknummer (zondag eerst).00, 01, ..., 53
%WWeeknummer (maandag eerst).00, 01, ..., 53
%cLocale's datum & tijd.Ma 30 Sep 07:06:05 2013
%xLocale's datum.09/30/13
%XLocale'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

  1. Python Keywords en Identifiers: Gereserveerde woorden en naamconventies onder de knie krijgen
  2. Python Datatypes onder de knie krijgen: Een praktische gids
  3. Python Operators onder de knie krijgen: Een uitgebreide gids
  4. Python Pass Statement onder de knie krijgen: Een praktische gids
  5. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  6. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  7. Python-iterators: hoe ze werken en hoe je je eigen maakt
  8. Python-closures uitgelegd: hoe geneste functies variabelen vangen
  9. Python Regular Expressions (re-module) – een praktische gids
  10. Python datetime beheersen: praktische gids voor datums, tijden en tijdzones
  11. Python's time-module beheersen: functies, structs en praktische voorbeelden