Jak przeanalizować ciąg znaków na datę i godzinę w Pythonie (strptime)
Dowiedz się, jak konwertować ciągi znaków na obiekty typu datetime w języku Python. Opanuj metodę strptime, analizuj ciągi dat, obsługuj strefy czasowe i zapobiegaj błędom formatu.
Przegląd
Podczas tworzenia aplikacji, które przetwarzają zgłoszenia użytkowników, przeglądają internetowe bazy danych, analizują logi serwera lub importują arkusze CSV, często otrzymujesz informacje o dacie i godzinie w postaci nieprzetworzonych ciągów tekstowych (np. „2026-05-25 15:45”`). Ponieważ nie można wykonywać obliczeń, arytmetyki dat ani sortowania na ciągach znaków, należy je przeanalizować w obiektach typu datetime w języku Python.
Podstawową metodą tej konwersji jest `datetime.strptime(date_string, format_string)`. Nazwa oznacza „czas analizy ciągu”. Funkcja pobiera surowy ciąg daty i szablon formatu zawierający dyrektywy (np. `%Y` dla roku, `%m` dla miesiąca i `%d` dla dnia) i zwraca odpowiedni obiekt typu datetime.
Jeśli ciąg wejściowy nie pasuje dokładnie do podanego szablonu formatu, Python zgłasza błąd „ValueError”. Aby zapobiec awariom, zawsze zawijaj operacje `strptime()` w bloku `try-except`. W przypadku aplikacji analizujących różnorodne, nieustrukturyzowane dane wejściowe, zewnętrzne biblioteki, takie jak `python-dateutil`, mogą pomóc w zautomatyzowaniu wykrywania analizatora składni.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje analizowanie ciągów dat przy użyciu datetime.strptime, obsługę nieprawidłowych danych wejściowych i obliczanie różnic dat.
from datetime import datetime
# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"
parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)
# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
print(f"\nParse Error: {e}")
# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18
Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25Wdrażanie krok po kroku
- Zaimportuj klasę datetime z modułu datetime.
- Określ dokładną strukturę ciągu dat (np. dzień, miesiąc, separatory).
- Wywołaj datetime.strptime(date_string, format_pattern) z odpowiednimi dyrektywami (takimi jak %Y, %m, %d).
- Zawiń instrukcję analizy w bloku try-except ValueError, aby sprawnie obsługiwać zniekształcone ciągi.
Często zadawane pytania
Jaka jest różnica między strftime i strptime?
strptime (czas analizy ciągu) analizuje ciąg znaków, aby utworzyć obiekt typu datetime. strftime (czas w formacie ciągu) formatuje obiekt datetime w czytelną reprezentację w postaci ciągu znaków.
Jak analizować ciągi dat ISO 8601 (np. „2026-05-25T18:30:00Z”)?
WPython 3.7+ można użyć wbudowanej funkcji datetime.fromisoformat(string), która efektywnie obsługuje ciągi ISO bez konieczności ręcznego szablonu formatu.
Powiązane tematy
Dowiedz się, jak uzyskać bieżącą datę i godzinę w Pythonie za pomocą modułu datetime. Formatuj daty na ciągi znaków za pomocą strftime i obsługuj strefy czasowe.
Jak przekonwertować ciąg na Int w PythonieDowiedz się, jak przekonwertować ciąg znaków na liczbę całkowitą w Pythonie za pomocą funkcji int(). Bezpiecznie obsługuj błędy i konwertuj liczby z formatu binarnego, ósemkowego lub szesnastkowego.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Ciągi Pythona
Manipulacja ciągami głównymi w Pythonie. Poznaj metody ciągów, wycinanie, łączenie i techniki formatowania dzięki przejrzystym, wykonywalnym przykładom kodu.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Dekoratory Pythona a wzorzec projektowy dekoratora: kluczowe różnice
Porównaj dekoratory Pythona z klasycznym wzorcem projektowym dekoratora. Zrozum różnice między zawijaniem funkcji w czasie definicji a dynamiczną kompozycją obiektów w czasie wykonywania z możliwym do uruchomienia kodem.