Python Dilinde Tarih ve Saat İşlemleri: `datetime` Modülü Kullanımı
Python, tarih ve saat verilerini işlemek için güçlü ve esnek bir modül olan datetime modülünü sunar. Bu modül, tarihleri, saatleri veya her ikisini birden temsil eden nesnelerle çalışmayı kolaylaştırır. Bir uygulamanın olayları zaman damgasıyla kaydetmesi, randevuları planlaması veya belirli bir zaman dilimindeki verileri analiz etmesi gerektiğinde, datetime modülü temel bir araç haline gelir.
Temel Sözdizimi
datetime modülü, farklı ihtiyaçlar için çeşitli sınıflar sunar. En yaygın kullanılanları şunlardır:
date: Yıl, ay ve gün bilgilerini içerir.time: Saat, dakika, saniye ve mikrosaniye bilgilerini içerir.datetime: Hem tarih hem de saat bilgilerini içerir.timedelta: İki tarih veya saat arasındaki farkı temsil eder.
Bu sınıfları kullanmak için öncelikle modülün içe aktarılması gerekir:
from datetime import date, time, datetime, timedeltaDetaylı Açıklama
Her bir sınıfın temel kullanımını ve nesne oluşturma yöntemlerini inceleyelim:
date Sınıfı
Bir date nesnesi oluşturmak için date(yıl, ay, gün) yapısı kullanılır. Yıl dört haneli, ay 1-12 arası, gün 1-31 arası bir değer olmalıdır.
from datetime import date
bugun = date(2023, 10, 26)
print(bugun)
# Çıktı: 2023-10-26Mevcut tarihi almak için date.today() metodu kullanılır.
from datetime import date
bugun_an = date.today()
print(f"Bugünün tarihi: {bugun_an}")
# Örnek Çıktı: Bugünün tarihi: 2023-10-26time Sınıfı
Bir time nesnesi oluşturmak için time(saat, dakika, saniye, mikrosaniye) yapısı kullanılır. Mikrosaniye isteğe bağlıdır. Saat 0-23, dakika 0-59, saniye 0-59, mikrosaniye 0-999999 aralığında olmalıdır.
from datetime import time
su_an_saat = time(14, 30, 0, 500000) # 14:30:00.500000
print(su_an_saat)
# Çıktı: 14:30:00.500000datetime Sınıfı
Hem tarih hem de saat bilgilerini içeren en yaygın kullanılan sınıftır. Bir datetime nesnesi oluşturmak için datetime(yıl, ay, gün, saat, dakika, saniye, mikrosaniye) yapısı kullanılır. Saat, dakika, saniye ve mikrosaniye parametreleri isteğe bağlıdır.
from datetime import datetime
belirli_zaman = datetime(2023, 10, 26, 15, 45, 30)
print(belirli_zaman)
# Çıktı: 2023-10-26 15:45:30Mevcut tarih ve saati almak için datetime.now() metodu kullanılır.
from datetime import datetime
su_an = datetime.now()
print(f"Şu anki tarih ve saat: {su_an}")
# Örnek Çıktı: Şu anki tarih ve saat: 2023-10-26 15:45:30.123456timedelta Sınıfı
İki date, time veya datetime nesnesi arasındaki farkı temsil eder. Ayrıca, bir tarih veya saate belirli bir süre eklemek veya çıkarmak için de kullanılabilir.
from datetime import datetime, timedelta
bugun = datetime.now()
gelecek_hafta = bugun + timedelta(weeks=1)
gecen_ay = bugun - timedelta(days=30)
print(f"Bugün: {bugun}")
print(f"Gelecek hafta: {gelecek_hafta}")
print(f"Geçen ay: {gecen_ay}")Pratik Kullanım Örnekleri
Tarih ve Saat Formatlama (strftime)
strftime() metodu, datetime nesnelerini belirli bir formatta string'e dönüştürmek için kullanılır. Format kodları, tarih ve saat bileşenlerini temsil eder.
from datetime import datetime
simdi = datetime.now()
print(f"Varsayılan format: {simdi}") # Örnek: 2023-10-26 15:45:30.123456
# Özel formatlama
formatli_tarih_saat = simdi.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatlı (YYYY-MM-DD HH:MM:SS): {formatli_tarih_saat}") # Örnek: 2023-10-26 15:45:30
formatli_tarih_turkce = simdi.strftime("%d %B %Y, %A")
print(f"Formatlı (DD Ay YYYY, Gün): {formatli_tarih_turkce}") # Örnek: 26 Ekim 2023, Perşembe
formatli_saat_am_pm = simdi.strftime("%I:%M %p")
print(f"Formatlı (HH:MM AM/PM): {formatli_saat_am_pm}") # Örnek: 03:45 PMYaygın strftime format kodları:
%Y: Dört haneli yıl (örn. 2023)%m: İki haneli ay (01-12)%d: İki haneli gün (01-31)%H: 24 saat formatında saat (00-23)%M: İki haneli dakika (00-59)%S: İki haneli saniye (00-59)%f: Mikrosaniye (000000-999999)%A: Haftanın tam adı (örn. Perşembe)%B: Ayın tam adı (örn. Ekim)%a: Haftanın kısa adı (örn. Per)%b: Ayın kısa adı (örn. Eki)%j: Yılın günü (001-366)%w: Haftanın günü (0 Pazar, 6 Cumartesi)%x: Yerel tarih formatı%X: Yerel saat formatı%c: Yerel tarih ve saat formatı%I: 12 saat formatında saat (01-12)%p: AM/PM göstergesi
String'den Tarih ve Saate Dönüştürme (strptime)
strptime() metodu, belirli bir formatta string bir ifadeyi datetime nesnesine dönüştürmek için kullanılır. Bu, özellikle dış kaynaklardan alınan tarih verilerini işlerken önemlidir.
from datetime import datetime
tarih_string = "26-10-2023 16:00:00"
format_string = "%d-%m-%Y %H:%M:%S"
donusturulen_tarih = datetime.strptime(tarih_string, format_string)
print(f"String'den dönüştürülen datetime nesnesi: {donusturulen_tarih}")
# Çıktı: String'den dönüştürülen datetime nesnesi: 2023-10-26 16:00:00
# Farklı bir format
diger_tarih_string = "2023/10/26 4:00 PM"
diger_format = "%Y/%m/%d %I:%M %p"
donusturulen_tarih_2 = datetime.strptime(diger_tarih_string, diger_format)
print(f"İkinci örnek: {donusturulen_tarih_2}")
# Çıktı: İkinci örnek: 2023-10-26 16:00:00strptime metodunda kullanılan format string'in, dönüştürülecek string ile tam olarak eşleşmesi gerektiğini unutmamak önemlidir; aksi takdirde bir ValueError hatası alınır.
Tarih ve Saat Karşılaştırmaları
datetime nesneleri, standart karşılaştırma operatörleri (<, >, <=, >=, ==, !=) kullanılarak kolayca karşılaştırılabilir.
from datetime import datetime
simdi = datetime.now()
gelecek_zaman = datetime(2024, 1, 1, 0, 0, 0) # Yeni Yıl
gecmis_zaman = datetime(2023, 1, 1, 0, 0, 0) # Geçen Yıl Başlangıcı
print(f"Şimdi < Gelecek Zaman: {simdi < gelecek_zaman}")
print(f"Şimdi > Geçmiş Zaman: {simdi > gecmis_zaman}")
print(f"Gelecek Zaman == Geçmiş Zaman: {gelecek_zaman == gecmis_zaman}")Önemli Notlar
Zaman Dilimleri (Timezones):
datetimemodülü varsayılan olarak zaman dilimi bilgisini içermez (naive datetime nesneleri). Zaman dilimi farklarını yönetmek içinpytzgibi üçüncü taraf kütüphaneler veya Python 3.9 ve sonrası içinzoneinfomodülü kullanılması önerilir.Performans: Büyük ölçekli zaman serisi işlemleri veya çok sayıda tarih hesaplaması yapılıyorsa,
pandaskütüphanesi gibi daha optimize edilmiş araçlar değerlendirilebilir.Hata Yönetimi:
strptime()kullanırken, geçersiz bir tarih string'i veya uyumsuz bir format verilirseValueErrorhatası fırlatılır. Bu durumlarıtry-exceptblokları ile yönetmek önemlidir.Modül İçe Aktarımı: Genellikle
from datetime import datetime, date, time, timedeltaşeklinde belirli sınıfları içe aktarmak daha yaygındır. Ancak tüm modülüimport datetimeolarak içe aktarıpdatetime.datetime.now()gibi kullanmak da mümkündür.
        
                
            
            
Yorum yap
Yorumlar