W tym artykule nauczysz się tworzyć obiekt daty i godziny na podstawie ciągu znaków (z pomocą przykładów).
strptime()
Metoda tworzy obiekt datetime z podanego łańcucha.
Uwaga: nie możesz utworzyć datetime
obiektu z każdego ciągu. Ciąg musi mieć określony format.
Przykład 1: ciąg znaków do obiektu 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 uruchomieniu programu wynik będzie następujący:
date_string = 21 czerwca 2018 type of date_string = date_object = 2018-06-21 00:00:00 type of date_object =
Jak działa strptime ()?
Metoda strptime()
klasowa przyjmuje dwa argumenty:
- ciąg (konwertowany na datę i godzinę)
- kod formatu
Na podstawie użytego ciągu i kodu formatu metoda zwraca równoważny datetime
obiekt.
W powyższym przykładzie:
Tutaj,
%d
- reprezentuje dzień miesiąca. Przykład: 01, 02,…, 31%B
- Pełna nazwa miesiąca. Przykład: styczeń, luty itp.%Y
- Rok za pomocą czterech cyfr. Przykład: 2018, 2019 itd.
Przykład 2: ciąg znaków do obiektu 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 uruchomieniu programu wynik będzie następujący:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Formatuj listę kodów
Poniższa tabela zawiera wszystkie kody formatów, których możesz użyć.
Dyrektywa | Znaczenie | Przykład |
%a | Skrócona nazwa dnia tygodnia. | Niedz., Pon.… |
%A | Pełna nazwa dnia tygodnia. | Niedziela poniedziałek,… |
%w | Dzień tygodnia jako liczba dziesiętna. | 0, 1,…, 6 |
%d | Dzień miesiąca jako ułamek dziesiętny z wypełnieniem zerowym. | 01, 02,…, 31 |
%-d | Dzień miesiąca jako liczba dziesiętna. | 1, 2,…, 30 |
%b | Skrócona nazwa miesiąca. | Styczeń, luty,…, grudzień |
%B | Pełna nazwa miesiąca. | Styczeń luty,… |
%m | Miesiąc jako liczba dziesiętna z zerami. | 01, 02,…, 12 |
%-m | Miesiąc jako liczba dziesiętna. | 1, 2,…, 12 |
%y | Rok bez wieku jako liczba dziesiętna z wypełnieniem zerowym. | 00, 01,…, 99 |
%-y | Rok bez wieku jako liczba dziesiętna. | 0, 1,…, 99 |
%Y | Rok z wiekiem jako liczbą dziesiętną. | 2013, 2019 itd. |
%H | Godzina (zegar 24-godzinny) jako liczba dziesiętna z zerami. | 00, 01,…, 23 |
%-H | Godzina (zegar 24-godzinny) jako liczba dziesiętna. | 0, 1,…, 23 |
%I | Godzina (zegar 12-godzinny) jako liczba dziesiętna z zerami. | 01, 02,…, 12 |
%-I | Godzina (zegar 12-godzinny) jako liczba dziesiętna. | 1, 2,… 12 |
%p | Lokalne AM lub PM. | AM, PM |
%M | Minuta jako liczba dziesiętna z zerami. | 00, 01,…, 59 |
%-M | Minuta jako liczba dziesiętna. | 0, 1,…, 59 |
%S | Po drugie jako liczba dziesiętna z zerami. | 00, 01,…, 59 |
%-S | Drugi jako liczba dziesiętna. | 0, 1,…, 59 |
%f | Mikrosekunda jako liczba dziesiętna, dopełniona zerami po lewej stronie. | 000000 - 999999 |
%z | Przesunięcie czasu UTC w postaci + GGMM lub -GGMM. | |
%Z | Nazwa strefy czasowej. | |
%j | Dzień roku jako liczba dziesiętna z zerami. | 001, 002,…, 366 |
%-j | Dzień roku jako liczba dziesiętna. | 1, 2,…, 366 |
%U | Numer tygodnia w roku (niedziela jako pierwszy dzień tygodnia). Wszystkie dni w nowym roku poprzedzające pierwszą niedzielę są uważane za tydzień 0. | 00, 01,…, 53 |
%W | Numer tygodnia w roku (poniedziałek jako pierwszy dzień tygodnia). Wszystkie dni w nowym roku poprzedzające pierwszy poniedziałek przypadają na tydzień 0. | 00, 01,…, 53 |
%c | Odpowiednia reprezentacja daty i czasu w ustawieniach regionalnych. | Poniedziałek, 30 września, 07:06:05 2013 |
%x | Właściwa reprezentacja daty dla lokalizacji. | 30.09.13 |
%X | Odpowiednia reprezentacja czasu w języku lokalnym. | 07:06:05 |
%% | Dosłowny znak „%”. | % |
ValueError w strptime ()
Jeśli ciąg (pierwszy argument) i kod formatu (drugi argument) przekazane do strptime()
nie są zgodne, otrzymasz ValueError
. Na przykład:
from datetime import datetime date_string = "12/11/2018" date_object = datetime.strptime(date_string, "%d %m %Y") print("date_object =", date_object)
Jeśli uruchomisz ten program, pojawi się błąd.
Błąd wartości: dane czasu „12/11/2018” nie są zgodne z formatem „% d% m% Y”
Zalecane lektury: Python strftime ()