Ebben a cikkben megtanulod létrehozni egy dátumidő objektumot egy karakterláncból (példák segítségével).
A strptime()
metódus a megadott karaktersorozatból létrehoz egy dátum objektumot.
Megjegyzés: Nem hozhat létre datetime
objektumot minden karakterláncból. A karakterláncnak bizonyos formátumban kell lennie.
1. példa: karakterlánc a datetime objektumhoz
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))
A program futtatásakor a kimenet a következő lesz:
date_string = 2018. június 21. date_string = date_object = 2018-06-21 00:00:00 date_object típus =
Hogyan működik a strptime ()?
Az strptime()
osztály metódusának két argumentuma van:
- karakterlánc (amelyet idõre konvertálunk)
- formátum kód
Az alkalmazott karaktersorozat és formátumkód alapján a metódus megadja annak megfelelő datetime
objektumát.
A fenti példában:
Itt,
%d
- A hónap napját képviseli. Példa: 01, 02,…, 31%B
- A hónap teljes neve. Példa: január, február stb.%Y
- Év négy számjeggyel. Példa: 2018, 2019 stb.
2. példa: karakterlánc a datetime objektumhoz
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)
A program futtatásakor a kimenet a következő lesz:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Kódlista formázása
Az alábbi táblázat bemutatja az összes használható formátumkódot.
Irányelv | Jelentése | Példa |
%a | Rövidített hétköznapi név. | V, H,… |
%A | Teljes hétköznapi név. | Vasárnap hétfő,… |
%w | Hétköznap decimális számként. | 0, 1,…, 6 |
%d | A hónap napja nulla betétes tizedesjegyként. | 01, 02,…, 31 |
%-d | A hónap napja decimális számként. | 1., 2.,…, 30. |
%b | Rövidített havi név. | Jan, február,…, dec |
%B | Teljes hónap neve. | Január február,… |
%m | Hónap nulla betétes decimális számként. | 01, 02,…, 12 |
%-m | A hónap decimális számként. | 1., 2.,…, 12. |
%y | Század nélküli év nulla betétes tizedesszámként. | 00, 01,…, 99 |
%-y | Év század nélkül, tizedes számként. | 0, 1,…, 99 |
%Y | Év, évszázad tizedesjegyként. | 2013, 2019 stb. |
%H | Óra (24 órás óra) nulla betétes decimális számként. | 00, 01,…, 23 |
%-H | Óra (24 órás óra) tizedes számként. | 0, 1,…, 23 |
%I | Óra (12 órás óra) nulla betétes decimális számként. | 01, 02,…, 12 |
%-I | Óra (12 órás óra) decimális számként. | 1., 2., 12. |
%p | A területi beállítás: AM vagy PM. | DÉLELŐTT DÉLUTÁN |
%M | Perc nulla betétes decimális számként. | 00, 01,…, 59 |
%-M | Perc decimális számként. | 0, 1,…, 59 |
%S | Másodszor, nulla betétes decimális számként. | 00, 01,…, 59 |
%-S | Második tizedes számként. | 0, 1,…, 59 |
%f | Mikroszekundum decimális számként, balra nulla betétes. | 000000 - 999999 |
%z | UTC eltolás + HHMM vagy -HHMM alakban. | |
%Z | Időzóna neve. | |
%j | Az év napja nulla betétes tizedes számként. | 001, 002,…, 366 |
%-j | Az év napja decimális számként. | 1, 2,…, 366 |
%U | Az év heti száma (vasárnap, mint a hét első napja). Az első vasárnapot megelőző új év minden napja a 0. hétnek tekintendő. | 00, 01,…, 53 |
%W | Az év heti száma (hétfő, mint a hét első napja). Az első hétfőt megelőző új év minden napja a 0. hétnek tekintendő. | 00, 01,…, 53 |
%c | A területi beállítás megfelelő dátum és idő ábrázolása. | 2013. szeptember 30., hétfő, 07:06:05 |
%x | A területi beállítás megfelelő dátumábrázolása. | 2013. 09. 30. |
%X | A nyelv megfelelő időbeli ábrázolása. | 07:06:05 |
%% | Szó szerinti „%” karakter. | % |
ValueError strptime-ben ()
Ha a karakterlánc (első argumentum) és a formátumkód (második argumentum) strptime()
nem egyezik, akkor megkapja ValueError
. Például:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Ha futtatja ezt a programot, hibaüzenetet kap.
ValueError: A '12 / 11/2018 'időadat nem egyezik a (z)'% d% m% Y 'formátummal
Ajánlott olvasmányok: Python strftime ()