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 birliktetimedelta— süre (iki an arasındaki fark)
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
datetime.now() # current date + time
date.today() # current date onlytimedelta ile aritmetik
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.0timedelta, 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.
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.
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:
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
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.
İpucu göster
base + timedelta(days=30), ardından .strftime
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
`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).
İpucu göster
İtalyan formatlı desenle strptime.
3 denemeden sonra çözüm mevcut
Ek zorluk
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.
İpucu göster
The difference between two dates returns a timedelta. Access the integer days with delta.days.
3 denemeden sonra çözüm mevcut