Python'da Tarih Manipülasyonu
Bu makale, Python'da tarih manipülasyonunu açıklar.
YouTube Video
Python'da Tarih Manipülasyonu
Python'da tarih manipülasyonu öncelikle datetime
modülü ile yapılır. Bu modül, tarih ve saatleri manipüle etmek için çeşitli sınıflar ve fonksiyonlar sağlar.
Aşağıda, datetime
modülünü kullanarak temel tarih manipülasyonuna dair bazı örnekler verilmiştir.
Tarih ve Saati Alma
Geçerli tarih ve saati aşağıdaki gibi alabilirsiniz. datetime.now()
ve datetime.today()
neredeyse aynı sonucu döndürür, ancak saat dilimlerini nasıl ele aldıklarında farklılıklar olabilir.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
- Bu kod, geçerli tarih ve saati ve ayrıca yalnızca bugünün tarihini alır ve gösterir.
Belirli Tarih ve Saatler Oluşturma
Belirli bir tarih ve saat aşağıdaki gibi oluşturulabilir.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
- Bu kod, belirtilen tarih ve saati (7 Kasım 2023, 10:30:45) oluşturur ve gösterir.
Tarihleri Biçimlendirme
Tarih biçimlendirmesi aşağıdaki gibi yapılabilir.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
- Bu kod, geçerli tarih ve saati alır, onu
strftime
ile belirtilen biçime dönüştürür ve gösterir.
Tarih biçimi dizeleri
%Y
: Yıl (4 basamaklı)%m
: Ay (01 ile 12 arası)%d
: Gün (01 ile 31 arası)%H
: Saat (00 ile 23 arası)%M
: Dakika (00 ile 59 arası)%S
: Saniye (00 ile 59 arası)
Tarih dizelerini ayrıştırma
Bir tarihi temsil eden bir dizeyi bir datetime
nesnesine dönüştürebilirsiniz.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
- Bu kod, bir dize olarak ifade edilen bir tarihi
strptime()
kullanarak birdatetime
nesnesine dönüştürür ve gösterir.
Tarih Hesaplamaları
Tarihsel işlemler aşağıdaki gibi gerçekleştirilebilir.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
- Bu kod,
timedelta
kullanarak geçerli tarih ve saate gün ve saat ekleyip çıkarır; yarın, bir hafta önce ve iki saat sonra olan tarih ve saati hesaplayıp gösterir.
Saat dilimlerini yönetme
datetime
modülü ile saat dilimlerini de yönetebilirsiniz.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
datetime
varsayılan olarak 'naive datetime' (saat dilimi bilgisiz) döndürür. Saat dilimlerini açıkçatimezone
sınıfı veyazoneinfo
kullanarak yönetebilirsiniz.
date sınıfı ve time sınıfı
datetime
modülüyle yalnızca tarihleri veya yalnızca saatleri de yönetebilirsiniz.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
date
sınıfı yalnızca tarihleri,time
sınıfı ise yalnızca saatleri yönetir.
datetime
ve timestamp
arasında dönüşüm
UNIX zaman damgaları ile datetime
nesneleri arasında dönüşüm yapmak mümkündür. Burada, UNIX zaman damgası 1 Ocak 1970'ten bu yana geçen saniye sayısını ifade eder.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
- Bu kod, geçerli tarih ve saati UNIX zaman damgasına dönüştürür, ardından bu zaman damgasını
fromtimestamp()
işleviyle tekrar birdatetime
nesnesine dönüştürür.
Yaygın tuzaklar
datetime
modülünü kullanırken aşağıdaki noktalara dikkat etmelisiniz.
datetime.now()
saat dilimlerini dikkate almaz, bu yüzden uluslararasılaştırma için açıkçatimezone.utc
kullanmanız gerekir.- Biçim dizelerinde
%m
(ay) ve%M
(dakika) ile karışıklık yapmamaya dikkat edin.
Özet
datetime
modülü, esnek tarih ve saat manipülasyonu için birçok başka özellik de sağlar. Ayrıca, belirli işlemler için uzmanlaşmış olan date
, time
ve timedelta
gibi sınıflar mevcuttur.
Diğer kütüphanelerin kullanımı, daha gelişmiş tarih manipülasyonlarına olanak tanır. Örneğin, pandas
zaman serisi verilerini işleme konusunda uzmanlaşmıştır, dateutil
ise karmaşık tarih ayrıştırma için uygundur. Ayrıca, arrow
kütüphanesi de kullanışlıdır.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.