In dit artikel leer je om een datetime-object te maken uit een string (met behulp van voorbeelden).
De strptime()
methode maakt een datetime-object uit de opgegeven string.
Opmerking: u kunt niet datetime
van elke string een object maken . De string moet een bepaald formaat hebben.
Voorbeeld 1: tekenreeks 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 juni 2018 type date_string = date_object = 2018-06-21 00:00:00 type date_object =
Hoe strptime () werkt?
De strptime()
klassemethode heeft twee argumenten:
- string (die worden geconverteerd naar datetime)
- opmaakcode
Op basis van de gebruikte tekenreeks en opmaakcode retourneert de methode het equivalente datetime
object.
In het bovenstaande voorbeeld:
Hier,
%d
- Vertegenwoordigt de dag van de maand. Voorbeeld: 01, 02, …, 31%B
- Volledige naam van de maand. Voorbeeld: januari, februari etc.%Y
- Jaar in vier cijfers. Voorbeeld: 2018, 2019 etc.
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 = 12-11-2018 09:15:32 dt_object2 = 11-12-2018 09:15:32
Formaat codelijst
In de onderstaande tabel staan alle formaatcodes die u kunt gebruiken.
Richtlijn | Betekenis | Voorbeeld |
%a | Afgekorte weekdagnaam. | Zo, ma,… |
%A | Volledige naam van de weekdag. | Zondag maandag,… |
%w | Weekdag als een decimaal getal. | 0, 1, …, 6 |
%d | Dag van de maand als decimaal met nul opgevuld. | 01, 02, …, 31 |
%-d | Dag van de maand als decimaal getal. | 1, 2, …, 30 |
%b | Afgekorte maandnaam. | Jan, feb, …, dec |
%B | Volledige maandnaam. | Januari februari,… |
%m | Maand als een met nul opgevuld decimaal getal. | 01, 02, …, 12 |
%-m | Maand als een decimaal getal. | 1, 2, …, 12 |
%y | Jaar zonder eeuw als een met nul opgevuld decimaal getal. | 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 nul opgevuld decimaal getal. | 00, 01, …, 23 |
%-H | Uur (24-uurs klok) als een decimaal getal. | 0, 1, …, 23 |
%I | Uur (12-uurs klok) als een nul opgevuld decimaal getal. | 01, 02, …, 12 |
%-I | Uur (12-uurs klok) als decimaal getal. | 1, 2, … 12 |
%p | Locale is AM of PM. | AM PM |
%M | Minuut als een met nul opgevuld decimaal getal. | 00, 01, …, 59 |
%-M | Minuut als een decimaal getal. | 0, 1, …, 59 |
%S | Ten tweede als een met nul opgevuld decimaal getal. | 00, 01, …, 59 |
%-S | Ten tweede als een decimaal getal. | 0, 1, …, 59 |
%f | Microseconde als een decimaal getal, links opgevuld met nul. | 000000 - 999999 |
%z | UTC-offset in de vorm + UUMM of -UUMM. | |
%Z | Naam tijdzone. | |
%j | Dag van het jaar als een met nul opgevuld decimaal getal. | 001, 002, …, 366 |
%-j | Dag van het jaar als een 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 worden beschouwd als week 0. | 00, 01, …, 53 |
%c | De juiste weergave van datum en tijd van de locale. | Ma 30 september 07:06:05 2013 |
%x | De juiste datumweergave van de locale. | 30/09/13 |
%X | De juiste tijdsweergave van de locale. | 07:06:05 |
%% | Een letterlijk '%'-teken. | % |
ValueError in strptime ()
Als de string (eerste argument) en de formaatcode (tweede argument) die aan de doorgegeven strptime()
is niet overeenkomen, krijg je 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: tijdgegevens '12 / 11/2018 'komen niet overeen met indeling'% d% m% Y '
Aanbevolen resultaten: Python strftime ()