Programlama dünyasında, bir uygulamanın ne zaman kullanıldığını kaydetmek, kullanıcıların yaşını hesaplamak, bir aboneliğin bitiş tarihini bulmak veya veritabanındaki işlemleri zamana göre sıralamak gibi senaryolarla sıklıkla karşılaşırız. Ancak Python dilinde, sadece zaman ve tarih bilgisini tutmak için tasarlanmış, doğrudan (örneğin metin veya tam sayı gibi) kendine ait bir temel veri tipi bulunmaz.
Bunun yerine Python, zaman ve tarih bilgilerini basit bir metin olarak değil, oluşturulmuş özel bir nesne (object) olarak görüp işler. Bu nesnelerle çalışabilmek ve tarih/saat manipülasyonları yapabilmek için Python ile birlikte hazır olarak gelen datetime modülünü kullanmamız gerekir.
Hazırladığımız bu kapsamlı rehberde, Python’da tarih ve saat işlemlerini nasıl yöneteceğinizi gerçek hayat örnekleriyle, adım adım öğreneceksiniz.
1. Datetime Modülü ve Temel Sınıfları (Classes)
datetime modülü, zaman ve tarihle ilgili çok çeşitli fonksiyonlar ve özellikler sağlayan özel sınıflar (classes) içerir. Python 3 sürümlerinde programlarınızda kullanabileceğiniz temel datetime sınıfları şunlardır:
datetime.date: Yalnızca tarihle ilgili nitelikleri barındıran sınıftır. Yıl (year), ay (month) ve gün (day) özelliklerini içerir.datetime.time: Yalnızca zamanla (saat) ilgili nitelikleri barındıran sınıftır. Saat (hour), dakika (minute), saniye (second), mikrosaniye (microsecond) ve saat dilimi (tzinfo) özelliklerini içerir.datetime.datetime: Yukarıdakidatevetimesınıflarının birleşiminden oluşur. Hem tarih hem de saat verilerini tek bir nesnede tutar ve projelerde sıklıkla kullanılan asıl sınıf budur.datetime.timedelta: İki farklı tarih veya saat nesnesi arasındaki zaman farkını (gün, saniye, mikrosaniye cinsinden) veren ve zaman matematiği yapmamızı sağlayan sınıftır.datetime.tzinfo: Saat dilimi (time zone) özelliklerini tutmak için oluşturulmuş temel sınıftır.
2. Modülü İçe Aktarma (Import İşlemi)
Bu sınıflara erişebilmek için öncelikle modülü kodumuza dahil etmeliyiz. Programımızın en üstüne şu kod satırını yazarak spesifik bir sınıfı içe aktarabiliriz:
from datetime import datetime
Bu sayede doğrudan datetime sınıfının yeteneklerini kullanabiliriz. Eğer modülün tamamını içe aktarmak isterseniz import datetime komutunu da kullanabilirsiniz ancak bu durumda fonksiyonları çağırırken her defasında başına datetime. ön ekini koymanız gerekir.
3. Anlık Tarih ve Saati Öğrenmek: now() ve today()
Programı çalıştırdığınız anın tarih ve saatini almak için datetime sınıfına ait now() fonksiyonu kullanılır. Bu fonksiyon, içinde bulunulan andaki tarih ve saat bilgilerini mikrosaniyesine kadar verir.
Örnek Kullanım:
from datetime import datetime
an = datetime.now()
print("Şu anki tarih ve saat:", an)
# Örnek Çıktı: 2026-04-04 11:38:14.170414
Eğer saat bilgisine ihtiyacınız yoksa ve sadece bugünün yıl, ay, gün bilgisini istiyorsanız, date sınıfı ile birlikte today() fonksiyonunu kullanabilirsiniz. now() fonksiyonu saat bilgisi de içerdiğinden sadece date sınıfı ile kullanılamaz.
from datetime import date
bugun = date.today()
print("Bugün:", bugun) # Örnek Çıktı: 2026-04-04
4. Tarih Nesnesinin Bileşenlerine Tek Tek Ulaşmak
Oluşturduğunuz bir tarih nesnesinin içerisindeki yıla, aya veya saate ayrı ayrı ihtiyacınız olabilir. Tarih nesnesi üzerinden bu verilere alt özellikler (attributes) şeklinde kolayca erişebilirsiniz.
Ayrıca weekday() fonksiyonu ile haftanın kaçıncı gününde olduğunuzu öğrenebilirsiniz. Python’da pazartesi haftanın 0. günü kabul edilirken, pazar günü 6. gün olarak kabul edilir.
Örnek Uygulama:
from datetime import datetime
bugun = datetime.today()
print("Yıl:", bugun.year) # Yıl bilgisi (Örn: 2026)
print("Ay:", bugun.month) # Ay bilgisi (Örn: 4)
print("Gün:", bugun.day) # Gün bilgisi (Örn: 4)
print("Saat:", bugun.hour) # Saat bilgisi
print("Dakika:", bugun.minute) # Dakika bilgisi
print("Saniye:", bugun.second) # Saniye bilgisi
print("Haftanın Günü:", bugun.weekday()) # Örn: 5 (Cumartesi)
5. Kendi Tarih Nesnemizi Oluşturmak
Sadece bugünü değil, geçmiş veya gelecekteki spesifik bir tarihi de nesne olarak tanımlayabilirsiniz. Bunun için datetime sınıfına yıl, ay ve gün verilerini parametre olarak vermeniz yeterlidir. Dilerseniz saat, dakika ve saniye verilerini de atayabilirsiniz.
Örnek: Türkiye Cumhuriyeti’nin kuruluş tarihini bir nesneye dönüştürelim:
from datetime import datetime
# Sadece tarih belirterek:
kurulus = datetime(year=1923, month=10, day=29)
print("Kuruluş Tarihi:", kurulus) # Çıktı: 1923-10-29 00:00:00
# Saat verilerini de ekleyerek:
dogum_tarihi = datetime(year=1923, month=10, day=29, hour=8, minute=30, second=35)
print("Detaylı Tarih:", dogum_tarihi) # Çıktı: 1923-10-29 08:30:35
6. Tarihler Arası Matematiksel İşlemler (Timedelta)
Bir kişinin tam yaşını (kaç gündür yaşadığını) hesaplamak veya “bugünden 150 gün sonra hangi tarih olacak?” sorusuna cevap bulmak için tarihler arasında toplama ve çıkarma işlemleri yapabiliriz. İki tarih arasında aritmetiksel bir işlem yapıldığında sonuç timedelta (zaman farkı) nesnesi ile tutulur.
timedelta nesnesi üzerinden aradaki farka gün (.days), saniye (.seconds) veya mikrosaniye (.microseconds) cinsinden ulaşılabilir.
Örnek Uygulama 1: Yaş (Gün) Hesaplama
from datetime import datetime
bugun = datetime.today()
dogum = datetime(year=1995, month=5, day=15)
yas_farki = bugun - dogum # Bu işlem bir timedelta nesnesi üretir
print("Şu ana kadar yaşadığınız gün sayısı:", yas_farki.days, "gün")
Örnek Uygulama 2: Gelecekteki Bir Tarihi Bulma Bugünün tarihine 150 gün ekleyelim:
import datetime
bugun = datetime.datetime.today()
fark = datetime.timedelta(days=150) # 150 günlük bir zaman dilimi oluşturduk
gelecek = bugun + fark
print("150 gün sonraki tarih:", gelecek)
7. Tarihleri İstediğimiz Formatta Yazdırmak: strftime()
Python tarihleri varsayılan olarak 2026-04-04 15:30:00 formatında tutar. Ancak biz bu tarihi “04 Nisan 2026, Cumartesi” şeklinde son kullanıcıya çok daha okunaklı ve şık bir metin olarak göstermek isteyebiliriz.
strftime() (String Format Time) fonksiyonu, elimizdeki date, datetime veya time nesnesini kullanarak bize tarihi bildiren biçimlendirilmiş string (metin) bir değer verir.
Öncelikle en çok kullanılan bazı biçimlendirme sembollerine (format kodlarına) göz atalım:
%Y: Yıl (Örn: 2026)%m: Sayı olarak ay (Örn: 04)%B: Yazı ile tam ay ismi (Örn: Nisan)%d: Sayı olarak gün (Örn: 04)%A: Yazı ile tam gün ismi (Örn: Cumartesi)%Xveya%H:%M:%S: Saat bilgisi (Örn: 14:30:00)
Türkçe Karakter Uyarısı: Eğer formatlamada ay ve gün isimlerinin (“April” yerine “Nisan” gibi) işletim sisteminizin yerel dilinde (Türkçe) çıkmasını istiyorsanız, programınıza locale modülünü dahil etmeli ve dili ayarlamalısınız.
Kapsamlı Örnek:
import datetime
import locale
# Tarih formatlamasını Türkçe yapması için komut veriyoruz
locale.setlocale(locale.LC_ALL, 'Turkish_Turkey.1254')
an = datetime.datetime.now()
# Formatlama işlemleri
print(an.strftime('%d.%m.%Y tarihinde buluşalım.')) # Çıktı: 04.04.2026 tarihinde buluşalım.
print(an.strftime('%d %B %Y, %A')) # Çıktı: 04 Nisan 2026, Cumartesi
print(an.strftime('Saat: %X')) # Çıktı: Saat: 16:53:54
8. Metin (String) İfadeleri Tarih Nesnesine Çevirmek: strptime()
Kimi zaman web sitelerinden, veritabanlarından veya kullanıcıdan input() aracılığıyla aldığımız tarih verileri “29 Ekim 1923 saat 14:32:11” gibi sadece birer metin (string) formatında gelir. Metinlerle matematiksel işlem yapılamayacağından, bu veriyi datetime nesnesine çevirmemiz şarttır.
Bunun için strptime() (String Parse Time) fonksiyonu kullanılır. Bu fonksiyon çalışırken, bir adet metni ve bu metnin nasıl yazıldığını (hangi biçimlendiricilerin kullanıldığını) parametre olarak sizden talep eder.
Örnek Dönüşüm İşlemi:
import datetime
import locale
locale.setlocale(locale.LC_ALL, 'Turkish_Turkey.1254')
tarih_metni = '29 Ekim 1923 saat 14:32:11'
# Metnin yapısına birebir uyan format şablonunu (pattern) yazarak çeviriyoruz
tarih_nesnesi = datetime.datetime.strptime(tarih_metni, '%d %B %Y saat %H:%M:%S')
print("Çevrilen Tarih Nesnesi:", tarih_nesnesi)
# Çıktı: 1923-10-29 14:32:11
# Artık nesneye dönüştüğü için matematiksel özelliklerine erişebiliriz:
print("Nesnenin Yılı:", tarih_nesnesi.year) # Çıktı: 1923
Sonuç Python’da tarih ve saatleri yönetmek datetime modülünün sunduğu güçlü nesne tabanlı yaklaşım ile oldukça keyiflidir. Sınıfları tanımak, timedelta ile zamanda ileri-geri gidebilmek, strftime() ile estetik metinler oluşturup strptime() ile metinleri çözümleyebilmek, yazılım geliştirirken kullanıcı deneyimini doğrudan artıracak en kritik becerilerden biridir. Şimdi bilgisayarınızda kendi Python geliştirme ortamınızı açarak yaş hesaplama araçları veya geri sayım sayaçları yazarak pratik yapmaya hemen başlayabilirsiniz!





