Ana içeriğe geç
Modül 8 · Ders 2 ders 4Kurstaki 30/36~12 min
Modül dersleri (2/4)

tarihsaat: tarihler ve saatler

datetime modülü, sınıfların tarih ve saatleri temsil etmesini sağlar.

Üç ana sınıf

  • date — yalnızca tarih (yıl, ay, gün)
  • time — yalnızca zaman (saat, dakika, saniye, mikrosaniye)
  • datetime — tarih + saat birlikte
  • timedelta — süre (iki an arasındaki fark)
Python
from datetime import date, time, datetime, timedelta

date(2025, 1, 1)                  # datetime.date(2025, 1, 1)
time(14, 30, 0)                   # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0)   # datetime.datetime(2025, 1, 1, 14, 30)

"Şimdi": now ve today

Python
datetime.now()        # current date + time
date.today()          # current date only

timedelta ile aritmetik

Python
from datetime import datetime, timedelta

ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)

# difference between two datetimes -> timedelta
delta = domani - ora
delta.days        # 1
delta.total_seconds()   # 86400.0

timedelta, days, seconds, microseconds, milliseconds'yi kabul eder, minutes, hours, weeks (belirsiz olan months veya years DEĞİLDİR).

Biçimlendirme: strftime

Datetime → string'i bir modele göre dönüştürür.

Python
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d")         # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M")   # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y")      # 'Wednesday 01 January 2025' (locale-dependent)

En çok kullanılan direktifler: %Y 4 haneli yıl, %m 2 haneli ay, %d 2 haneli gün, %H 24 saat, %M dakika, %S saniye.

Ayrıştırma: strptime

Bunun tersi: string → tarihsaat, beklenen model göz önüne alındığında.

Python
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)

ISO8601

Veri alışverişi için her zaman ISO 8601 formatını (YYYY-MM-DDTHH:MM:SS) tercih edin:

Python
ora.isoformat()                 # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")

Saat dilimleri ve bilinçli tarih saatleri

Varsayılan olarak Python'daki datetime nesneler saftır (yani saat dilimi bilgisi içermemektedirler). Gerçek dünyadaki uygulamalar için, saat dilimi bilgisini datetime.timezone.utc aracılığıyla ayarlayarak veya zoneinfo modülünü kullanarak onları farkındalık sağlamak en iyi uygulamadır.

Deneyin

Egzersiz#python.m8.l2.e1
Denemeler: 0Yükleniyor…

Tarihi 1 Ocak 2025'ten 30 gün sonra hesaplayın ve "date_str" değişkeninde "YYYY-AA-GG" olarak biçimlendirin. 'date_str'yi değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

base + timedelta(days=30), ardından .strftime

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m8.l2.e2
Denemeler: 0Yükleniyor…

`s = '15/03/2025'` dizesi verildiğinde, onu strptime ile `d` değişkenine (tarihsaat nesnesi) ayrıştırın. Haftanın tam sayı gününü değerlendirin `d.weekday()` (0=Pzt, 6=Paz).

Düzenleyici yükleniyor…
İpucu göster

İtalyan formatlı desenle strptime.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m8.l2.e3
Denemeler: 0Yükleniyor…

Import `date` from the `datetime` module. Calculate the difference in days between December 25, 2026 (`date(2026, 12, 25)`) and December 20, 2026 (`date(2026, 12, 20)`). Store the integer number of days (using the `.days` attribute of the delta) in `days_diff`. Finally, evaluate the variable.

Düzenleyici yükleniyor…
İpucu göster

The difference between two dates returns a timedelta. Access the integer days with delta.days.

3 denemeden sonra çözüm mevcut