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
strftimeile 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 birdatetimenesnesine 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,
timedeltakullanarak 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}")datetimevarsayılan olarak 'naive datetime' (saat dilimi bilgisiz) döndürür. Saat dilimlerini açıkçatimezonesınıfı veyazoneinfokullanarak 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}")datesınıfı yalnızca tarihleri,timesı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 birdatetimenesnesine 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.utckullanmanı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.