Resim

Python Tarih ve Saat İşlemleri

Python Tarih ve Saat İşlemleri: datetime Modülü

Neden Özel Bir Modül Gerekir?

Tarih ve zaman, sadece sayısal değerler değildir; aynı zamanda yıl, ay, gün, saat dilimi ve artık saniyeler gibi karmaşık kurallara tabidir. Python'da bu karmaşıklığı yönetmek ve hesaplamaları doğru yapmak için datetime modülü kullanılır.

datetime modülü içinde 5 temel obje (sınıf) bulunur:

  1. date: Sadece tarih (Yıl, Ay, Gün).

  2. time: Sadece saat (Saat, Dakika, Saniye, Mikrosaniye).

  3. datetime: Tarih ve saati bir arada tutar. (En sık kullanılan).

  4. timedelta: İki tarih veya saat arasındaki farkı (süre) temsil eder.

  5. tzinfo: Saat dilimi bilgisi (UTC, CET vb.).

from datetime import datetime, date, time, timedelta

1. datetime Objesi: Tarih ve Saatin Merkezi

datetime sınıfı, hem tarihi hem de saati tutan en yaygın kullanılan objedir.

A. Mevcut Tarih ve Saati Alma

# Şu anki tarihi ve saati (sistem saatine göre) alır
simdi = datetime.now() 
print(f"Şu anki zaman: {simdi}")

# Yıl, ay, gün, saat gibi niteliklere erişim
print(f"Yıl: {simdi.year}, Ay: {simdi.month}, Gün: {simdi.day}")

B. Belirli Bir Tarih/Saat Oluşturma

# Yıl, ay, gün (zorunlu), saat, dakika (isteğe bağlı)
dogum_gunu = datetime(2025, 10, 25, 14, 30, 0)
print(f"Belirlenen an: {dogum_gunu}")

Kendiniz Deneyebilirsiniz:

2. Tarih ve Saat Farkları: timedelta

timedelta objesi, iki datetime objesi arasındaki farkı veya belirli bir süreyi temsil eder. Tarih veya saatlere ekleme/çıkarma yapmak için kullanılır.

A. Süre Oluşturma

# 7 gün ve 5 saatlik bir süre tanımlama
bir_hafta_sonra = timedelta(days=7, hours=5)
print(bir_hafta_sonra) # Çıktı: 7 days, 5:00:00

B. Tarih Hesaplama

bugun = datetime.now()
gecen_hafta = bugun - timedelta(weeks=1)
gelecek_ay = bugun + timedelta(days=30)

print(f"Bir hafta önce: {gecen_hafta}")

C. Yaş Hesaplama (İki Tarih Arasındaki Fark)

İki datetime objesi çıkarıldığında sonuç bir timedelta objesi olur.

dogum_tarihi = datetime(1990, 5, 15)
bugunun_tarihi = datetime.now()

fark = bugunun_tarihi - dogum_tarihi
yas_gun = fark.days # Toplam gün sayısı

print(f"Yaşadığı toplam gün sayısı: {yas_gun}")

Kendiniz Deneyebilirsiniz:

3. Tarih Formatlama: strftime ve strptime

Verilerinizi dış dünyadan (dosya, API) alırken veya çıktı verirken, tarih/saat verileri genellikle dize (string) formatında olur. Bu iki metot, dize $\leftrightarrow$ datetime dönüşümünü sağlar.

MetotYönAçıklama
strftime (format string)datetime $\rightarrow$ DizeTarih objesini istenen formata dönüştürür.
strptime (parse string)Dize $\rightarrow$ datetimeDizedeki tarihi verilen formata göre ayrıştırır.

A. Dizeye Formatlama (strftime)

Kullanılan bazı yaygın format kodları:

KodAçıklamaÖrnek
%YYıl (4 haneli)2025
%mAy (01-12)10
%dGün (01-31)22
%HSaat (24 saat)20
%MDakika50
%AHaftanın Tam GünüÇarşamba
simdi = datetime.now()

# Formatlama: Yıl-Ay-Gün Saat:Dakika
formatli_dize = simdi.strftime("Bugün: %d/%m/%Y, Saat: %H:%M") 
print(formatli_dize) 
# Çıktı: Bugün: 22/10/2025, Saat: 20:50

B. Dizeden Ayrıştırma (strptime)

Dizeyi ayrıştırırken, dizedeki formatın birebir aynısını strptime metoduna vermelisiniz.

tarih_dizesi = "2024-03-01 18:00:00"

# Dizedeki formatı tam olarak eşleştiriyoruz
yeni_tarih = datetime.strptime(tarih_dizesi, "%Y-%m-%d %H:%M:%S")

print(type(yeni_tarih)) # Çıktı: <class 'datetime.datetime'>

datetime modülü, zaman manipülasyonunun ve tarih hesaplamalarının Python'daki bel kemiğidir. timedelta ile süreleri yönetmek ve strftime/strptime ile dize dönüşümlerini doğru yapmak, veri işleme becerilerinizi profesyonel bir seviyeye taşır.

Kendiniz Deneyebilirsiniz:

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?