Python'da Tarih Manipülasyonu

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 bir datetime 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ça timezone sınıfı veya zoneinfo 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 bir datetime 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ça timezone.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.

YouTube Video