V tomto článku se naučíte vytvořit objekt datetime z řetězce (pomocí příkladů).
strptime()
Metoda vytvoří objekt datetime z daného řetězce.
Poznámka:datetime
Objekt nelze vytvořit z každého řetězce. Řetězec musí být v určitém formátu.
Příklad 1: Řetězec do objektu datetime
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))
Když spustíte program, výstup bude:
date_string = 21. června 2018 typ date_string = date_object = 2018-06-21 00:00:00 typ date_object =
Jak funguje strptime ()?
Metoda strptime()
třídy má dva argumenty:
- řetězec (který se převede na datetime)
- formátovací kód
Na základě použitého řetězce a formátovacího kódu vrátí metoda svůj ekvivalentní datetime
objekt.
Ve výše uvedeném příkladu:
Tady,
%d
- Představuje den v měsíci. Příklad: 01, 02,…, 31%B
- Celé jméno měsíce. Příklad: leden, únor atd.%Y
- Rok čtyřciferný. Příklad: 2018, 2019 atd.
Příklad 2: Řetězec do objektu datetime
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)
Když spustíte program, výstup bude:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Formátovat seznam kódů
V následující tabulce jsou uvedeny všechny kódy formátů, které můžete použít.
Směrnice | Význam | Příklad |
%a | Zkrácený název dne v týdnu. | Ne, Po, … |
%A | Celý název dne v týdnu. | Neděle pondělí,… |
%w | Den v týdnu jako desetinné číslo. | 0, 1,…, 6 |
%d | Den měsíce jako desetinné čárky. | 01, 02,…, 31 |
%-d | Den v měsíci jako desetinné číslo. | 1, 2,…, 30 |
%b | Zkrácený název měsíce. | Leden, únor,…, prosinec |
%B | Celé jméno měsíce. | Leden únor,… |
%m | Měsíc jako desetinné číslo doplněné nulou. | 01, 02,…, 12 |
%-m | Měsíc jako desetinné číslo. | 1, 2,…, 12 |
%y | Rok bez století jako nulové desetinné číslo. | 00, 01,…, 99 |
%-y | Rok bez století jako desetinné číslo. | 0, 1,…, 99 |
%Y | Rok se stoletím jako desetinné číslo. | 2013, 2019 atd. |
%H | Hour (24-hour clock) as a zero-padded decimal number. | 00, 01,…, 23 |
%-H | Hodina (24hodinový formát) jako desetinné číslo. | 0, 1,…, 23 |
%I | Hodina (12hodinový formát) jako nulové desetinné číslo. | 01, 02,…, 12 |
%-I | Hodina (12hodinový formát) jako desetinné číslo. | 1, 2,… 12 |
%p | Místní nebo dopolední čas. | DOPOLEDNE ODPOLEDNE |
%M | Minuta jako desetinné číslo doplněné nulou. | 00, 01,…, 59 |
%-M | Minuta jako desetinné číslo. | 0, 1,…, 59 |
%S | Druhé jako nulové desetinné číslo. | 00, 01,…, 59 |
%-S | Druhý jako desetinné číslo. | 0, 1,…, 59 |
%f | Mikrosekunda jako desítkové číslo, s nulovým polstrováním vlevo. | 000000 - 999999 |
%z | Offset UTC ve tvaru + HHMM nebo -HHMM. | |
%Z | Název časového pásma. | |
%j | Den v roce jako nulové číslo. | 001, 002,…, 366 |
%-j | Den v roce jako desetinné číslo. | 1, 2,…, 366 |
%U | Číslo týdne v roce (neděle jako první den v týdnu). Všechny dny nového roku předcházející první neděli se považují za dny 0. | 00, 01,…, 53 |
%W | Číslo týdne v roce (pondělí jako první den v týdnu). Všechny dny nového roku předcházejícího prvnímu pondělí se považují za dny 0. | 00, 01,…, 53 |
%c | Vhodná reprezentace data a času podle národního prostředí. | Po 30. září 07:06:05 2013 |
%x | Vhodná reprezentace data podle národního prostředí. | 30.09.13 |
%X | Vhodná časová reprezentace národního prostředí. | 07:06:05 |
%% | Doslovný znak '%'. | % |
ValueError v strptime ()
Pokud se řetězec (první argument) a formátový kód (druhý argument) předaný do strptime()
neodpovídají, dostanete ValueError
. Například:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Pokud spustíte tento program, zobrazí se chyba.
ValueError: časové údaje '12/11/2018' neodpovídají formátu '% d% m% Y'
Doporučené čtení: Python strftime ()