Menu

Python datetime: Tarihler, Saatler, Timedelta ve Saat Dilimleri

Python'un datetime modülünde pratik bir tur — ayrıştırma, biçimlendirme, tarihler üzerinde hesap yapma ve kaybolmadan saat dilimi yönetmek.

İki Temel Tip: date ve datetime

datetime modülü sana bilmeye değer dört şey verir: date, time, datetime ve timedelta. İlk üçü kulağa geldiği gibidir; dördüncüsü bir zaman aralığıdır.

main.py
Output
Click Run to see the output here.

Bir date, saat bilgisi olmadan bir günü — yıl, ay, gün — temsil eder. Bir datetime, bir tarih artı bir saattir. Saate ihtiyacın yoksa date daha temiz bir tercihtir.

Belirli Tarihler Oluşturmak

Doğrudan inşa et:

main.py
Output
Click Run to see the output here.

Argümanlar date için year, month, day, datetime için year, month, day, hour, minute, second, microsecond'a kadar uzanır.

Alanları Okumak

Her date/datetime'ın öznitelikleri vardır:

main.py
Output
Click Run to see the output here.

isoformat(), makine okunabilir çıktı için dostundur — diğer sistemlerin net ayrıştırabileceği "2026-04-20T09:30:15" gibi bir şey üretir.

strftime ile Biçimlendirme

İnsan okunabilir çıktı için .strftime(fmt), bir date ya da datetime'ı biçimlendirilmiş bir string'e çevirir:

main.py
Output
Click Run to see the output here.

Hatırlamaya en çok değen format kodları:

  • %Y — 4 basamaklı yıl (2026)
  • %m — ay numarası, sıfır dolgulu (04)
  • %d — ayın günü, sıfır dolgulu (20)
  • %H / %I — saat, 24/12 saat formatı
  • %M — dakika
  • %S — saniye
  • %A / %a — haftanın günü adı tam / kısaltılmış (Monday / Mon)
  • %B / %b — ay adı tam / kısaltılmış (April / Apr)
  • %p — AM/PM

Ezberlemene gerek yok; bir referansı yer imlerine ekle ve ihtiyacın olduğunda bak.

strptime ile Ayrıştırmak

Ters yön: şekli bilinen bir string'i al ve onu bir datetime'a çevir:

main.py
Output
Click Run to see the output here.

Format string'i girdiyle tam olarak eşleşmek zorundadır. Eşleşmezse strptime ValueError fırlatır.

ISO-8601 string'leri (makine okunabilir standart) için modern Python'da daha basit bir kısayol var:

main.py
Output
Click Run to see the output here.

Rastgele formatlarla uğraşıyorsan, harici dateutil paketinin (pip install python-dateutil) makul bir tahminde bulunan esnek bir parser.parse()'ı var.

timedelta ile Aritmetik

Tarihlerde matematik yapmak için fark ya da kayma olarak timedelta kullan:

main.py
Output
Click Run to see the output here.

timedelta argümanları: days, seconds, microseconds, milliseconds, minutes, hours, weeks. months ya da years yok — aylar değişken uzunluktadır. Ay/yıl hesapları için dateutil.relativedelta kullan:

from dateutil.relativedelta import relativedelta
from datetime import date

today = date.today()
next_quarter = today + relativedelta(months=3)
print(next_quarter)

Saat Dilimleri: Naive ve Aware

Saat dilimi bilgisi olmayan bir datetime naive'dir — Python hangi saat dilimini temsil ettiğini bilmez. Tek bir mantıksal saat diliminde kaldığın sürece naive datetime'larda zaman hesabı yapmak sorun değil; dert, farklı saat dilimlerinden veri buluştuğu anda başlar.

Aware bir datetime, saat dilimi bilgisini beraberinde taşır. Bir saat dilimini açıkça iliştir:

main.py
Output
Click Run to see the output here.

Python 3.9, adlandırılmış saat dilimleri için zoneinfo modülünü ekledi (sistemin IANA veritabanını kullanarak):

main.py
Output
Click Run to see the output here.

Saat dilimleri arasında .astimezone() ile dönüştür:

main.py
Output
Click Run to see the output here.

Ezberlemeye değer bir kural: datetime'ları UTC'de sakla, yerel saat dilimlerine yalnızca gösterim anında dönüştür. Bu tek alışkanlık saat dilimi hatalarının çoğunu önler.

Timestamp'ler

Bir Unix timestamp'i, 1970-01-01 UTC'den bu yana geçen saniye sayısıdır. Python kolayca dönüştürür:

main.py
Output
Click Run to see the output here.

Timestamp'ler karşılaştırmalar, sıralama ve diğer sistemlerle uyumluluk için kullanışlıdır. İnsan okuyacak çıktı için önce tekrar datetime'a dönüştür.

Bir Şeyin Ne Kadar Sürdüğünü Ölçmek

Hızlı zamanlamalar için iki datetime'ı çıkar:

main.py
Output
Click Run to see the output here.

Daha ciddi performans ölçümleri için time.perf_counter() kullan — mikrosaniye altı çözünürlüğe sahiptir ve sistem saat değişikliklerinden etkilenmez. "Bu API çağrısı ne kadar sürdü" tarzı sayılar için datetime.now() fena değil.

Tekrar Kullanacağın Kalıplar

main.py
Output
Click Run to see the output here.

Akılda Kalacaklar

  • date, datetime ve timedelta ihtiyaçların %90'ını karşılar.
  • Makine okunabilir için ISO-8601, insan okunabilir için strftime.
  • UTC'de sakla; gösterim anında dönüştür.
  • Adlandırılmış saat dilimleri için zoneinfo kullan.
  • Ay ve yıllar için dateutil.relativedelta'ya uzan.

Gerçek dünya takımın için bir araç daha: düzenli ifadeler, sırada.

Sıkça Sorulan Sorular

Python'da şu anki tarihi ve saati nasıl alırım?

datetime.now() mevcut yerel tarihi ve saati döndürür. datetime.utcnow() UTC'yi döndürür (ancak utcnow() naive datetime döndürdüğü için modern tercih datetime.now(timezone.utc)'dir). Sadece tarih için date.today() kullan.

Bir tarihi string olarak nasıl biçimlendiririm?

Yıl-ay-gün için %Y-%m-%d gibi format kodlarıyla .strftime(format) kullan. Örnek: datetime.now().strftime('%Y-%m-%d %H:%M'). String'i geri ayrıştırmak için aynı format kodlarıyla datetime.strptime(text, format) kullan.

Python'da bir tarihe gün nasıl eklerim?

timedelta kullan: from datetime import date, timedelta; date.today() + timedelta(days=7). timedelta gün, saat, dakika, saniye, hafta ve daha fazlasını destekler. Ay ve yıl hesapları için harici dateutil.relativedelta'yı kullan — timedelta ayları bilmez.

Coddy ile kodlamayı öğren

BAŞLA