Python'da Tarih ve Zaman İşlemleri (Date and Time)
Python'da tarih ve zaman işlemleri için temel olarak datetime modülü kullanılır. Bu modül, tarih ve zaman bilgilerini temsil etmek, işlemek ve biçimlendirmek için çeşitli sınıflar ve fonksiyonlar sağlar.
Temel Sınıflar
1. datetime.date - Sadece Tarih (Yıl, Ay, Gün)
from datetime import date # Bugünün tarihini alma today = date.today() print("Bugün:", today) # 2023-10-15 # Belirli bir tarih oluşturma specific_date = date(2023, 12, 31) print("Belirli tarih:", specific_date) # 2023-12-31 # Bileşenlere erişim print("Yıl:", today.year) # 2023 print("Ay:", today.month) # 10 print("Gün:", today.day) # 15
2. datetime.time - Sadece Zaman (Saat, Dakika, Saniye, Mikrosaniye)
from datetime import time # Zaman oluşturma t = time(14, 30, 15) print("Zaman:", t) # 14:30:15 # Bileşenlere erişim print("Saat:", t.hour) # 14 print("Dakika:", t.minute) # 30 print("Saniye:", t.second) # 15 print("Mikrosaniye:", t.microsecond) # 0
3. datetime.datetime - Tarih ve Zaman Birlikte
from datetime import datetime # Şu anki tarih ve zaman now = datetime.now() print("Şimdi:", now) # 2023-10-15 14:32:45.123456 # Belirli bir tarih ve zaman oluşturma dt = datetime(2023, 12, 31, 23, 59, 59) print("Yılbaşı:", dt) # 2023-12-31 23:59:59 # Bileşenlere erişim print("Yıl:", now.year) print("Ay:", now.month) print("Gün:", now.day) print("Saat:", now.hour) print("Dakika:", now.minute) print("Saniye:", now.second)
4. datetime.timedelta - Zaman Farkları
from datetime import timedelta # 1 hafta 3 gün 4 saat 30 dakika delta = timedelta(weeks=1, days=3, hours=4, minutes=30) print("Zaman farkı:", delta) # 10 days, 4:30:00 # Tarih hesaplamaları today = datetime.now() one_week_later = today + timedelta(weeks=1) print("1 hafta sonra:", one_week_later) # İki tarih arası fark new_year = datetime(2024, 1, 1) time_left = new_year - today print("Yılbaşına kalan:", time_left) # 77 days, 9:23:15.456789
Biçimlendirme ve Ayrıştırma
1. strftime() - Tarihi String'e Çevirme
from datetime import datetime now = datetime.now() # Biçimlendirme print(now.strftime("%d/%m/%Y")) # 15/10/2023 print(now.strftime("%d-%B-%Y")) # 15-October-2023 print(now.strftime("%A, %d %B %Y")) # Sunday, 15 October 2023 print(now.strftime("%H:%M:%S")) # 14:45:30 print(now.strftime("%d/%m/%Y %H:%M:%S")) # 15/10/2023 14:45:30
2. strptime() - String'den Tarih Oluşturma
from datetime import datetime date_string = "15 October 2023" dt = datetime.strptime(date_string, "%d %B %Y") print(dt) # 2023-10-15 00:00:00 time_string = "15:30:00" t = datetime.strptime(time_string, "%H:%M:%S").time() print(t) # 15:30:00
Zaman Damgası (Timestamp) İşlemleri
from datetime import datetime # Şu anki zaman damgası now = datetime.now() timestamp = datetime.timestamp(now) print("Zaman damgası:", timestamp) # 1697389530.123456 # Zaman damgasından datetime oluşturma dt = datetime.fromtimestamp(timestamp) print("Tarih ve zaman:", dt) # 2023-10-15 14:45:30.123456
Zaman Dilimleri (Timezone)
from datetime import datetime, timezone, timedelta # UTC zamanı utc_now = datetime.now(timezone.utc) print("UTC Zamanı:", utc_now) # 2023-10-15 11:45:30.123456+00:00 # Belirli bir zaman dilimi # Önce timezone nesnesi oluştur tz = timezone(timedelta(hours=3)) # UTC+3 local_now = datetime.now(tz) print("Yerel zaman (UTC+3):", local_now) # 2023-10-15 14:45:30.123456+03:00 # Zaman dilimi dönüşümü utc_time = datetime(2023, 10, 15, 12, 0, 0, tzinfo=timezone.utc) local_time = utc_time.astimezone(timezone(timedelta(hours=3))) print("UTC:", utc_time) # 2023-10-15 12:00:00+00:00 print("Yerel:", local_time) # 2023-10-15 15:00:00+03:00
calendar Modülü
import calendar # Belirli bir ayın takvimini görüntüleme print(calendar.month(2023, 10)) # October 2023 # Mo Tu We Th Fr Sa Su # 1 # 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 # 16 17 18 19 20 21 22 # 23 24 25 26 27 28 29 # 30 31 # Yılın takvimini görüntüleme print(calendar.calendar(2023)) # Haftanın günü (0: Pazartesi, 6: Pazar) print(calendar.weekday(2023, 10, 15)) # 6 (Pazar) # Artık yıl kontrolü print(calendar.isleap(2024)) # True
time Modülü
import time # Şu anki zaman damgası print(time.time()) # 1697389530.123456 # Bekleme (sleep) print("Başladı") time.sleep(2.5) # 2.5 saniye bekler print("Bitti") # Yerel zamanı struct_time olarak almak local_time = time.localtime() print(local_time) # time.struct_time(tm_year=2023, tm_mon=10, tm_mday=15, tm_hour=14, # tm_min=45, tm_sec=30, tm_wday=6, tm_yday=288, tm_isdst=0) # Biçimlendirilmiş zaman print(time.strftime("%d/%m/%Y %H:%M:%S", local_time)) # 15/10/2023 14:45:30
Pratik Örnekler
1. Yaş Hesaplama
from datetime import date def calculate_age(birth_date): today = date.today() age = today.year - birth_date.year # Doğum günü henüz gelmediyse 1 yaş eksilt if (today.month, today.day) < (birth_date.month, birth_date.day): age -= 1 return age birthday = date(1990, 5, 15) print("Yaş:", calculate_age(birthday))
2. İş Günü Hesaplama (Hafta sonlarını atlayarak)
from datetime import datetime, timedelta def add_business_days(start_date, business_days): current_date = start_date added_days = 0 while added_days < business_days: current_date += timedelta(days=1) # Hafta sonu değilse (0: Pazartesi, 6: Pazar) if current_date.weekday() < 5: added_days += 1 return current_date start = datetime(2023, 10, 15) # Pazar result = add_business_days(start, 5) print("5 iş günü sonrası:", result) # 2023-10-20 00:00:00 (Cuma)
3. Zaman Ölçümü
import time def long_running_function(): time.sleep(2) # İşlem yapıyormuş gibi start_time = time.time() long_running_function() end_time = time.time() print(f"Fonksiyon {end_time - start_time:.2f} saniye sürdü") # Fonksiyon 2.00 saniye sürdü
0 Yorumlar