Python strptime()
Python strptime()
In dit artikel leer je om een datetime-object te maken van een string (met behulp van voorbeelden).
Video:datums en tijden in Python
De strptime()
methode maakt een datetime-object van de gegeven tekenreeks.
Opmerking: U kunt geen datetime
. maken object uit elke string. De string moet een bepaald formaat hebben.
Voorbeeld 1:string naar datetime-object
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type of date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type of date_object =", type(date_object))
Wanneer u het programma uitvoert, is de uitvoer:
date_string = 21 June, 2018 type of date_string = <class 'str'> date_object = 2018-06-21 00:00:00 type of date_object = <class 'datetime.datetime'>
Hoe strptime() werkt?
De strptime()
class-methode heeft twee argumenten:
- string (die geconverteerd moet worden naar datetime)
- code opmaken
Op basis van de gebruikte tekenreeks en opmaakcode, retourneert de methode de equivalente datetime
voorwerp.
In het bovenstaande voorbeeld:
Hier,
%d
- Staat voor de dag van de maand. Voorbeeld: 01, 02, ..., 31%B
- Naam van de maand voluit. Voorbeeld: januari, februari enz.%Y
- Jaartal in vier cijfers. Voorbeeld: 2018, 2019 enz.
Voorbeeld 2:tekenreeks naar datetime-object
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
Wanneer u het programma uitvoert, is de uitvoer:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Codelijst opmaken
De onderstaande tabel toont alle formaatcodes die u kunt gebruiken.
Richtlijn | Betekenis | Voorbeeld |
%a | Afgekorte naam van de weekdag. | Zon, ma, ... |
%A | Volledige naam van de weekdag. | Zondag, maandag, ... |
%w | Weekdag als decimaal getal. | 0, 1, ..., 6 |
%d | Dag van de maand als een decimaal getal met nul. | 01, 02, ..., 31 |
%-d | Dag van de maand als decimaal getal. | 1, 2, ..., 30 |
%b | Afgekorte maandnaam. | Jan, Feb, ..., Dec |
%B | Naam van volledige maand. | Januari, februari, ... |
%m | Maand als een decimaal getal met nul. | 01, 02, ..., 12 |
%-m | Maand als decimaal getal. | 1, 2, ..., 12 |
%y | Jaar zonder eeuw als decimaal getal met nul. | 00, 01, ..., 99 |
%-y | Jaar zonder eeuw als decimaal getal. | 0, 1, ..., 99 |
%Y | Jaar met eeuw als decimaal getal. | 2013, 2019 enz. |
%H | Uur (24-uurs klok) als een decimaal getal met nulpunt. | 00, 01, ..., 23 |
%-H | Uur (24-uurs klok) als decimaal getal. | 0, 1, ..., 23 |
%I | Uur (12-uurs klok) als een decimaal getal met nulpunten. | 01, 02, ..., 12 |
%-I | Uur (12-uurs klok) als decimaal getal. | 1, 2, ... 12 |
%p | Lokale AM of PM. | AM, PM |
%M | Minuut als een decimaal getal met nul. | 00, 01, ..., 59 |
%-M | Minuut als decimaal getal. | 0, 1, ..., 59 |
%S | Second als een decimaal getal met nul. | 00, 01, ..., 59 |
%-S | Seconde als decimaal getal. | 0, 1, ..., 59 |
%f | Microseconde als decimaal getal, links met nul opgevuld. | 000000 - 999999 |
%z | UTC-offset in de vorm +HHMM of -HHMM. | |
%Z | Naam tijdzone. | |
%j | Dag van het jaar als decimaal getal met nul. | 001, 002, ..., 366 |
%-j | Dag van het jaar als decimaal getal. | 1, 2, ..., 366 |
%U | Weeknummer van het jaar (zondag als eerste dag van de week). Alle dagen in een nieuw jaar voorafgaand aan de eerste zondag worden beschouwd als week 0. | 00, 01, ..., 53 |
%W | Weeknummer van het jaar (maandag als eerste dag van de week). Alle dagen in een nieuw jaar voorafgaand aan de eerste maandag vallen in week 0. | 00, 01, ..., 53 |
%c | Locale's juiste datum- en tijdweergave. | Ma 30 Sep 07:06:05 2013 |
%x | Locale's juiste datumweergave. | 30/09/13 |
%X | Locale's juiste tijdweergave. | 07:06:05 |
%% | Een letterlijk '%'-teken. | % |
Waardefout in strptime()
Als de string (eerste argument) en de formaatcode (tweede argument) doorgegeven worden aan de strptime()
komt niet overeen, je krijgt ValueError
. Bijvoorbeeld:
from datetime import datetime
date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
Als u dit programma uitvoert, krijgt u een foutmelding.
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Aanbevolen metingen: Python strftime()
Python