V tomto článku sa naučíte vytvárať objekt datetime z reťazca (pomocou príkladov).
strptime()
Metóda vytvorí objekt datetime z daného reťazca.
Poznámka:datetime
Objekt nemôžete vytvoriť z každého reťazca. Reťazec musí byť v určitom formáte.
Príklad 1: reťazec k 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))
Po spustení programu bude výstup:
date_string = 21 June, 2018 type of date_string = date_object = 2018-06-21 00:00:00 type of date_object =
Ako funguje strptime ()?
Metóda strptime()
triedy má dva argumenty:
- reťazec (ktorý sa prevedie na dátum a čas)
- formátovací kód
Na základe použitého reťazca a formátu kódu vráti metóda ekvivalentný datetime
objekt.
Vo vyššie uvedenom príklade:
Tu,
%d
- Predstavuje deň v mesiaci. Príklad: 01, 02, …, 31%B
- Celé meno mesiaca. Príklad: január, február atď.%Y
- Rok štyrmi číslicami. Príklad: 2018, 2019 atď.
Príklad 2: Reťazec k 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)
Po spustení programu bude výstup:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Formátovať zoznam kódov
Nasledujúca tabuľka zobrazuje všetky kódy formátu, ktoré môžete použiť.
Smernice | Význam | Príklad |
%a | Skrátený názov dňa v týždni. | Ne, Po, … |
%A | Celý názov dňa v týždni. | Nedeľa pondelok,… |
%w | Deň v týždni ako desatinné číslo. | 0, 1, …, 6 |
%d | Deň v mesiaci ako desatinné miesto doplnené nulou. | 01, 02, …, 31 |
%-d | Deň v mesiaci ako desatinné číslo. | 1, 2, …, 30 |
%b | Skrátený názov mesiaca. | Jan, Feb, …, Dec |
%B | Celý mesiac. | Január február,… |
%m | Mesiac ako desatinné číslo doplnené nulou. | 01, 02, …, 12 |
%-m | Mesiac ako desatinné číslo. | 1, 2, …, 12 |
%y | Rok bez storočia ako desatinné číslo s nulou. | 00, 01, …, 99 |
%-y | Rok bez storočia ako desatinné číslo. | 0, 1, …, 99 |
%Y | Rok so storočím ako desatinné číslo. | 2013, 2019 atď. |
%H | Hodina (24-hodinový formát) ako desatinné číslo doplnené nulou. | 00, 01, …, 23 |
%-H | Hodina (24-hodinový formát) ako desatinné číslo. | 0, 1,…, 23 |
%I | Hodina (12-hodinový formát) ako desatinné číslo doplnené nulou. | 01, 02, …, 12 |
%-I | Hodina (12-hodinový formát) ako desatinné číslo. | 1, 2, … 12 |
%p | Miestny čas je AM alebo PM. | DOPOLUDNIA POPOLUDNÍ |
%M | Minúta ako desatinné číslo doplnené nulou. | 00, 01, …, 59 |
%-M | Minúta ako desatinné číslo. | 0, 1, …, 59 |
%S | Druhé ako desatinné číslo s nulovou čiarkou. | 00, 01, …, 59 |
%-S | Druhé ako desatinné číslo. | 0, 1, …, 59 |
%f | Mikrosekundu ako desatinné číslo, vľavo doplnené nulou. | 000000 - 999999 |
%z | Ofset UTC vo forme + HHMM alebo -HHMM. | |
%Z | Názov časovej zóny. | |
%j | Deň v roku ako desatinné číslo s nulou. | 001, 002, …, 366 |
%-j | Deň v roku ako desatinné číslo. | 1, 2, …, 366 |
%U | Číslo týždňa v roku (nedeľa ako prvý deň v týždni). Všetky dni v novom roku predchádzajúcom prvej nedeli sa považujú za dni 0. | 00, 01, …, 53 |
%W | Číslo týždňa v roku (pondelok ako prvý deň v týždni). Všetky dni v novom roku, ktoré predchádzajú prvému pondelku, sa považujú za dni v 0. týždni. | 00, 01, …, 53 |
%c | Príslušné zastúpenie dátumu a času podľa miestneho nastavenia. | Pon 30. september 07:06:05 2013 |
%x | Príslušné zastúpenie dátumu podľa miestneho nastavenia. | 30.09.2013 |
%X | Vhodná časová reprezentácia miestneho času. | 07:06:05 |
%% | Doslovný znak „%“. | % |
ValueError v strptime ()
Ak sa reťazec (prvý argument) a formátový kód (druhý argument) odovzdaný do strptime()
nezhodujú, dostanete ValueError
. Napríklad:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Ak spustíte tento program, zobrazí sa chyba.
ValueError: časové údaje „11.12.2018“ sa nezhodujú s formátom „% d% m% Y“
Odporúčané čítania: Python strftime ()