Python'da Tarih ve Zaman İşlemleri (Date and Time)

 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)

python
Copy
Download
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)

python
Copy
Download
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

python
Copy
Download
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ı

python
Copy
Download
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

python
Copy
Download
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

python
Copy
Download
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

python
Copy
Download
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)

python
Copy
Download
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ü

python
Copy
Download
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ü

python
Copy
Download
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

python
Copy
Download
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)

python
Copy
Download
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ü

python
Copy
Download
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ü

Yorum Gönder

0 Yorumlar