Python’un datetime modülü, tarih ve zamanla çalışmayı sağlar. Bu modül, tarihleri ve zamanları temsil etmek ve bunları çeşitli formatlarda biçimlendirmek veya ayrıştırmak için çeşitli sınıflar sağlar.
Örnek 1: Mevcut Tarih ve Saati Alma
1 2 3 4 5 6 7 8 | import datetime # mevcut tarihi ve saati al simdi = datetime.datetime.now() print(simdi) |
Çıktı:
1 2 3 | 2024-05-02 08:26:49.219717 |
Burada datetime modülünü import datetime
ifadesiyle içe aktardık. Modül içinde tanımlanan sınıflardan biri datetime
sınıfıdır.
now()
metodunu kullanarak, mevcut yerel tarih ve saati içeren bir datetime nesnesi oluşturduk.
Örnek 2: Mevcut Tarihi Alma
1 2 3 4 5 6 7 8 | import datetime # mevcut tarihi al mevcut_tarih = datetime.date.today() print(mevcut_tarih) |
Çıktı:
1 2 3 | 2024-05-02 |
Yukarıdaki örnekte today()
metodunu kullanarak mevcut yerel tarihi içeren bir datetime nesnesi oluşturduk.
datetime Modülünün Nitelikleri Bir modülün tüm niteliklerini içeren bir liste almak için dir()
fonksiyonunu kullanabiliriz.
1 2 3 4 5 | import datetime print(dir(datetime)) |
Çıktı:
1 2 3 | ['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo'] |
datetime modülünün nitelikleri arasında en sık kullanılan sınıflar şunlardır:
datetime.datetime
: Bir tarih ve saat noktasını temsil eder.datetime.date
: Saati olmadan bir tarihi (yıl, ay ve gün) temsil eder.datetime.time
: Tarihi olmadan bir saati (saat, dakika, saniye ve mikrosaniye) temsil eder.datetime.timedelta
: datetime nesneleriyle aritmetik işlemler yapmak için kullanılan bir süreyi temsil eder.
Python datetime.date Sınıfı Python’da, date sınıfından tarih nesneleri oluşturabiliriz. Bir tarih nesnesi, bir tarihi (yıl, ay ve gün) temsil eder.
Örnek 3: Tarihi Temsil Eden Bir Tarih Nesnesi
1 2 3 4 5 6 | import datetime d = datetime.date(2022, 12, 25) print(d) |
Çıktı:
1 2 3 | 2022-12-25 |
Yukarıdaki örnekte date()
bir kurucudur. Kurucu üç argüman alır: yıl, ay ve gün.
Sadece date Sınıfını İçe Aktarma datetime modülünden sadece date sınıfını içe aktarabiliriz. Örneğin,
1 2 3 4 5 6 | from datetime import date d = date(2022, 12, 25) print(d) |
Çıktı:
1 2 3 | 2022-12-25 |
Burada from datetime import date
sadece datetime modülünden date sınıfını içe aktarır.
Örnek 4: today() Kullanarak Mevcut Tarihi Alma Bugünün tarihini içeren bir date nesnesi oluşturmak için today()
yöntemini kullanabiliriz.
1 2 3 4 5 6 7 8 | from datetime import date # today() ile mevcut tarihi al bugunun_tarihi = date.today() print("Bugünün tarihi =", bugunun_tarihi) |
Örnek 5: Bir Zamandan Tarih Alma Bir zaman damgasından date nesneleri de oluşturabiliriz.
Bir UNIX zaman damgası, belirli bir tarih ile 1 Ocak 1970, UTC arasındaki saniye sayısıdır. Bir zaman damgasını fromtimestamp() yöntemini kullanarak bir tarihe dönüştürebiliriz.
1 2 3 4 5 6 | from datetime import date zaman_damgasi = date.fromtimestamp(1326244364) print("Tarih =", zaman_damgasi) |
Örnek 6: Bugünün Yılını, Ayını ve Gününü Yazdırma date nesnesinden yıl, ay, gün, haftanın günü vb. gibi özellikleri kolayca alabiliriz. Örneğin,
1 2 3 4 5 6 7 8 9 10 | from datetime import date # bugünün tarih nesnesi bugun = date.today() print("Mevcut yıl:", bugun.year) print("Mevcut ay:", bugun.month) print("Mevcut gün:", bugun.day) |
Python datetime.time Sınıfı time sınıfından türetilen bir zaman nesnesi yerel saati temsil eder.
Örnek 7: Zaman Nesnesi Oluşturma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from datetime import time # time(saat = 0, dakika = 0, saniye = 0) a = time() print(a) # time(saat, dakika ve saniye) b = time(11, 34, 56) print(b) # time(saat, dakika ve saniye) c = time(saat = 11, dakika = 34, saniye = 56) print(c) # time(saat, dakika, saniye, mikrosaniye) d = time(11, 34, 56, 234566) print(d) |
Çıktı:
1 2 3 4 5 6 | 00:00:00 11:34:56 11:34:56 11:34:56.234566 |
Burada, time()
ile varsayılan değerlerle (saat:00, dakika:00, saniye:00) bir zaman nesnesi oluşturuldu. Diğer zaman nesneleri belirli saat, dakika, saniye ve hatta mikrosaniye değerleriyle oluşturuldu.
Örnek 8: Saat, Dakika, Saniye ve Mikrosaniye Yazdırma Zaman nesnesini oluşturduktan sonra, saat, dakika gibi özelliklerini kolayca yazdırabiliriz. Örneğin,
1 2 3 4 5 6 7 8 9 10 | from datetime import time a = time(11, 34, 56) print("Saat =", a.hour) print("Dakika =", a.minute) print("Saniye =", a.second) print("Mikrosaniye =", a.microsecond) |
Çıktı:
1 2 3 4 5 6 | Saat = 11 Dakika = 34 Saniye = 56 Mikrosaniye = 0 |
Burada mikrosaniye argümanını geçirmedik, bu yüzden varsayılan değeri olan 0 yazdırıldı.
datetime.datetime Sınıfı datetime modülünde datetime adında bir sınıf vardır ve bu sınıf hem tarih hem de zaman nesnelerinden bilgi içerebilir.
Örnek 9: Python datetime Nesnesi
1 2 3 4 5 6 7 8 9 10 11 | from datetime import datetime # datetime(yıl, ay, gün) a = datetime(2022, 12, 28) print(a) # datetime(yıl, ay, gün, saat, dakika, saniye, mikrosaniye) b = datetime(2022, 12, 28, 23, 55, 59, 342380) print(b) |
Çıktı:
1 2 3 4 | 2022-12-28 00:00:00 2022-12-28 23:55:59.342380 |
datetime()
kurucusundaki ilk üç argüman olan yıl, ay ve gün zorunludur.
Örnek 10: Yıl, Ay, Saat, Dakika ve Zaman Damgası Yazdırma
1 2 3 4 5 6 7 8 9 10 11 | from datetime import datetime a = datetime(2022, 12, 28, 23, 55, 59, 342380) print("Yıl =", a.year) print("Ay =", a.month) print("Saat =", a.hour) print("Dakika =", a.minute) print("Zaman Damgası =", a.timestamp()) |
Çıktı:
1 2 3 4 5 6 7 | Yıl = 2022 Ay = 12 Saat = 23 Dakika = 55 Zaman Damgası = 1511913359.34238 |
Python datetime.timedelta Sınıfı timedelta nesnesi, iki tarih veya zaman arasındaki farkı temsil eder. Örneğin,
Örnek 11: İki timedelta Nesnesi Arasındaki Fark
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from datetime import datetime, date, timedelta # date() kullanarak t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) # datetime() kullanarak t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6) print("t3'nün Türü =", type(t3)) print("t6'nın Türü =", type(t6)) |
Çıktı:
1 2 3 4 5 6 | t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 t3'nün Türü = <class 'datetime.timedelta'> t6'nın Türü = <class 'datetime.timedelta'> |
Görüldüğü gibi, hem t3
hem de t6
datetime.timedelta türündendir.
Örnek 12: İki timedelta Nesnesi Arasındaki Farkın Alınması
1 2 3 4 5 6 7 8 9 10 | from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3) |
Çıktı:
1 2 3 | t3 = 14 days, 13:55:39 |
Burada, t1
ve t2
adında iki timedelta nesnesi oluşturduk ve farklarını yazdırdık.
Örnek 14: timedelta Nesnesinin Toplam Saniyelerini Alma
1 2 3 4 5 6 | from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("Toplam saniyeler =", t.total_seconds()) |
Çıktı:
1 2 3 | Toplam saniyeler = 435633.233423 |
Python’da Tarih ve Zamanın Biçimlendirilmesi Tarih ve zamanın nasıl temsil edildiği, farklı yerlerde veya organizasyonlarda farklı olabilir. ABD’de mm/dd/yyyy formatı daha yaygınken, İngiltere’de dd/mm/yyyy formatı daha yaygındır.
Python’un strftime()
ve strptime()
metodları bununla başa çıkmamıza yardımcı olur.
Python strftime() Metodu strftime() metodu date, datetime ve time sınıflarının altında tanımlanmıştır. Bu metod, verilen bir tarih, datetime veya time nesnesinden biçimlendirilmiş bir dize oluşturur.
Örneği inceleyelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from datetime import datetime # mevcut tarih ve zaman simdi = datetime.now() t = simdi.strftime("%H:%M:%S") print("Zaman:", t) s1 = simdi.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY Saat:Dakika:Saniye formatı print("s1:", s1) s2 = simdi.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY Saat:Dakika:Saniye formatı print("s2:", s2) |
Çıktı:
1 2 3 4 5 | Zaman: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52 |
Burada %Y
, %m
, %d
, %H
vb. format kodları vardır. strftime()
metodu bir veya daha fazla format kodu alır ve buna göre biçimlendirilmiş bir dize döndürür.
Yukarıdaki örnekte, t
, s1
ve s2
dize olarak temsil edilmiştir.
%Y
– yıl [0001,…, 2018, 2019,…, 9999]%m
– ay [01, 02, …, 11, 12]%d
– gün [01, 02, …, 30, 31]%H
– saat [00, 01, …, 22, 23]%M
– dakika [00, 01, …, 58, 59]%S
– saniye [00, 01, …, 58, 59]
Daha fazla bilgi için strftime()
ve format kodlarına göz atabilirsiniz: Python strftime().
Python strptime() Metodu strptime() metodu, belirli bir dizeyi (tarih ve saat temsil eden) bir datetime nesnesine dönüştürür. Örneğin,
1 2 3 4 5 6 7 8 9 10 11 | from datetime import datetime tarih_dizisi = "25 Aralık, 2022" print("tarih_dizisi =", tarih_dizisi) # strptime() kullanarak tarih nesnesi oluştur tarih_nesnesi = datetime.strptime(tarih_dizisi, "%d %B, %Y") print("tarih_nesnesi =", tarih_nesnesi) |
Çıktı:
1 2 3 4 | tarih_dizisi = 25 Aralık, 2022 tarih_nesnesi = 2022-12-25 00:00:00 |
strptime()
metodu iki argüman alır:
- tarih ve saati temsil eden bir dize
- ilk argümana eşdeğer format kodu
Örneğin, %d
, %B
ve %Y
format kodları sırasıyla gün, ay (tam adı) ve yılı temsil eder.
Python’da Zaman Dilimi İşleme Çalıştığımız bir projede tarih ve saati kendi zaman dilimlerine göre göstermek istediğimizi varsayalım.
Zaman dilimini kendinizle uğraşmaktansa, üçüncü taraf pytZ
modülünü kullanmanızı öneririz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from datetime import datetime import pytz yerel = datetime.now() print("Yerel:", yerel.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_Londra = pytz.timezone('Europe/London') datetime_Londra = datetime.now(tz_Londra) print("Londra:", datetime_Londra.strftime("%m/%d/%Y, %H:%M:%S")) |
Çıktı:
1 2 3 4 5 | Yerel: 12/27/2022, 09:40:19 NY: 12/27/2022, 04:40:19 Londra: 12/27/2022, 09:40:19 |
Burada, datetime_NY
ve datetime_Londra
ilgili zaman dilimlerindeki mevcut tarih ve saati içeren datetime nesneleridir.