Softmush.com, teknoloji, yazılım ve dijital dünyaya dair derinlemesine içeriklerle bilgiye ulaşmanın güvenilir adresi. - Softmush.com
“ Söz konusu olan vatansa, gerisi teferruat. ”
Mustafa K. Atatürk
Python Dilinde Tarih ve Saat İşlemleri: `datetime` Modülü Kullanımı

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, timedelta

Detaylı 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-26

Mevcut 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-26

time 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.500000

datetime 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:30

Mevcut 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.123456

timedelta 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 PM

Yaygı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:00

strptime 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): datetime modülü varsayılan olarak zaman dilimi bilgisini içermez (naive datetime nesneleri). Zaman dilimi farklarını yönetmek için pytz gibi üçüncü taraf kütüphaneler veya Python 3.9 ve sonrası için zoneinfo modülü kullanılması önerilir.

  • Performans: Büyük ölçekli zaman serisi işlemleri veya çok sayıda tarih hesaplaması yapılıyorsa, pandas kü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 verilirse ValueError hatası fırlatılır. Bu durumları try-except blokları 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 datetime olarak içe aktarıp datetime.datetime.now() gibi kullanmak da mümkündür.

Yayınlanma Tarihi: 2025-10-29 12:01:42
Ultra İşlenmiş Gıdaların Gizli Faydaları: Her Şey Kötü Mü?
Önceki Haber

Ultra İşlenmiş Gıdaların Gizli Faydaları: Her Şey Kötü Mü?

Bilim Makaleleri
Sonraki Haber

CSS Dilinde Inline-block Kullanımı

CSS Makaleleri
CSS Dilinde Inline-block Kullanımı

Yorum yap

Yorum yapabilmek için  giriş  yapmalısınız.

Yorumlar

Bu yazı hakkında henüz yorum yapılmamıştır.
× Python Dilinde Veri Tipleri (Data Types) Kullanımı
Bu ilginizi çekebilir

Python Dilinde Veri Tipleri (Data Types) Kullanımı

Python programlama dili, verileri depolamak ve işlemek için çeşitli yerleşik veri tipleri...