Python'da Bir Dizeyi Datetime'a Ayrıştırma (strptime)

Python'da dizeleri tarihsaat nesnelerine nasıl dönüştüreceğinizi öğrenin. Strptime yönteminde uzmanlaşın, tarih dizelerini ayrıştırın, saat dilimlerini yönetin ve biçim hatalarını önleyin.

Bu Çözümü Editör'de deneyin

Genel Bakış

Kullanıcı formu gönderimlerini işleyen, web veritabanlarını kazıyan, sunucu günlüklerini ayrıştıran veya CSV sayfalarını içe aktaran uygulamalar oluştururken sıklıkla tarih ve saat bilgilerini ham metin dizeleri olarak alırsınız (ör. `"2026-05-25 15:45"`). Dizeler üzerinde hesaplamalar, tarih aritmetiği veya sıralama yapamayacağınız için bunları Python datetime nesnelerine ayrıştırmanız gerekir.

Bu dönüştürmenin birincil yöntemi "datetime.strptime(date_string, format_string)"dir. Adı "dize ayrıştırma süresi" anlamına gelir. İşlev, ham tarih dizesini ve yönergeleri içeren bir biçim şablonunu alır (yıl için "%Y", ay için "%m" ve gün için "%d" gibi) ve karşılık gelen bir tarihsaat nesnesini döndürür.

Giriş dizesi sağlanan format şablonuyla tam olarak eşleşmiyorsa Python bir "ValueError" hatası verir. Çökmeleri önlemek için, "strptime()" işlemlerini her zaman bir "try-hariç" bloğuna sarın. Çeşitli, yapılandırılmamış tarih girişlerini ayrıştıran uygulamalar için, 'python-dateutil' gibi harici kütüphaneler ayrıştırıcı tespitinin otomatikleştirilmesine yardımcı olabilir.

Kod ve Yürütme Çıkışı

Bu komut dosyası, datetime.strptime kullanarak tarih dizelerinin ayrıştırılmasını, geçersiz girişlerin ele alınmasını ve tarih farklarının hesaplanmasını gösterir.

parse_datetime.py
Editör'de deneyin
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())
Terminal Çıkışı
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-25

Adım Adım Uygulama

  • Datetime sınıfını datetime modülünden içe aktarın.
  • Tarih dizenizin tam yapısını tanımlayın (ör. gün, ay, ayırıcılar).
  • Datetime.strptime(date_string, format_pattern) işlevini uygun yönergelerle (%Y, %m, %d gibi) çağırın.
  • Hatalı biçimlendirilmiş dizeleri düzgün bir şekilde işlemek için ayrıştırma ifadesini try-hariç ValueError bloğuna sarın.

Sıkça Sorulan Sorular

strftime ve strptime arasındaki fark nedir?

strptime (dize ayrıştırma zamanı), bir datetime nesnesi oluşturmak için bir dizeyi ayrıştırır. strftime (string format time), bir datetime nesnesini okunabilir bir dize temsiline biçimlendirir.

ISO 8601 tarih dizelerini (ör. "2026-05-25T18:30:00Z") nasıl ayrıştırırım?

Python 3.7+'da, manuel format şablonu gerektirmeden ISO dizelerini verimli bir şekilde işleyen yerleşik datetime.fromisoformat(string) işlevini kullanabilirsiniz.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.