Python'da String'i Datetime'a Dönüştürme

Yayınlanan: 2022-12-20

Bir veri türünden başka bir veri türüne dönüştürmek, herhangi bir programlama dilinde çok önemlidir. Hemen hemen tüm programlama dilleri, yerleşik veri türleri için tür dönüştürmelerini destekler.

Datetime gibi özel veri türleri, dönüşümler için ekstra modüllere ihtiyaç duyar. Özellikle datetime -saat dönüşümleri için modüllere ihtiyacımız var çünkü bunlarla çalışmak programcılar için hiç bu kadar kolay olmamıştı. Şans eseri, python, tarih saatiyle çalışmak için yerleşik modüllere sahiptir.

Farklı modüller kullanarak Python'da bir datetime dizesini datetime nesnesine nasıl dönüştüreceğimizi öğreneceğiz. Buna geçmeden önce, neden ilk etapta onu dönüştürmemiz gerektiğine bakalım.

Bir tarih saat dizesini neden bir tarih saat nesnesine dönüştürmemiz gerekiyor?

Tarihlerle çalışmamız gerektiğinde, bunlar dizge biçimindeyse çalışmak kolay değildir. Bunları tarih saat biçimine dönüştürmek, onlarla çalışmayı çok kolaylaştırır. Dizelerdeki tarihler normal dizeler gibidir. Tarihlerle çalışmak için herhangi bir özel yöntemi olmayacak. Tarihlerle çalışırken ihtiyaç duymayacağımız genel dizi yöntemlerine sahip olacak.

Diyelim ki iki tarihi karşılaştırmamız gerekiyor. Dize biçimindeyse, doğru bir şekilde karşılaştırabiliriz. Eğer datetime -saat formatında iseler, sayılar gibi karşılaştırma işleçlerini kullanabiliriz.

Bu, datetime biçimine dönüştürmenin işleri kolaylaştırdığı yalnızca bir senaryodur. Tarih ekleme, çıkarma, saat dilimlerini işleme vb. gibi, datetime datetime nesnesine dönüştürmenin hayatımızı her zamankinden daha kolay hale getirdiği birçok senaryo vardır.

Bununla birlikte, bir datetime dizesini bir datetime nesnesine dönüştürmenin farklı yollarını görelim. datetime dizesini datetime nesnesine dönüştürmek için yerleşik datetime ve üçüncü taraf dateutil modüllerini kullanacağız. Datetime modülü ile başlayalım

Tarih saatini kullanma

datetime , tarihler ve saatlerle çalışmak için kullanılan yerleşik bir Python modülüdür. Bu modülde tarih ve saat ile çalışmamıza yardımcı olan birçok sınıf vardır. Dönüşüm için datetime.datetime sınıfını kullanacağız.

datetime.datetime birçok metoda sahiptir. Dönüşümde bize yardımcı olacak strptime yöntemiyle ilgileniyoruz. Kontrol edelim.

tarihsaat.strptime

datetime.strptime yöntemi, datetime dizesini bir datetime nesnesine dönüştürmek için kullanılır. Biri datetime saat dizisi, diğeri ise datetime dizisinin biçimi olmak üzere iki dize alır. Ve datetime nesnesini döndürür.

bir örnek görelim

 from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))

Yukarıdaki kodu çalıştırırsanız aşağıdaki çıktıyı göreceksiniz.

 2022-12-19 21:37:56

Bir datetime.strptime datetime kullanarak datetime -saat nesnesine dönüştürdük. Yönteme sağladığınız biçimin datetime dizesiyle tam olarak eşleştiğinden emin olun. Eşleşmezlerse, bir hata veya yanlış çıktı alabilirsiniz.

datetime formatı için bazı formatlama kodları kullandık. Dokümanlardaki tüm format kodlarına başvurabilirsiniz.

datetime.strptime yöntemi tam datetime döndürür. Tarih ve saati ayrı ayrı almak isterseniz, datetime nesnesinin date time yöntemlerini kullanabiliriz. Kodu görelim.

 from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())

Yukarıdaki kodu çalıştırın ve aşağıdaki çıktıyı göreceksiniz.

 Date: 2022-12-19 Time: 21:37:56

date ve time yöntemleri sırasıyla nesnelerini döndürür. Tarihler ve saatler için yine kendi yöntemlerine sahip olacaklar.

Yukarıda gördüğümüz datetime.strptime metodu için doğru stringleri ve formatları sağladık. Bunları doğru bir şekilde sağlamazsak, hatalar alırız. Bu hataların nasıl ele alınacağını görelim. Aşağıdaki kodu çalıştırın.

 from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))

Biçimlendirme, datetime dizesiyle eşleşmediğinden yukarıdaki kod bir hata atar. Bu tür hataların üstesinden gelmek için Pythons'un try-except'ini kullanabiliriz. Hadi ekleyelim.

 from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)

Şimdi, kodu tekrar çalıştırın. Kodu bozmadan aşağıdaki hata mesajını göreceksiniz.

 time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

Benzer şekilde, gelen parser.parse yöntemi için try-except'i de ekleyebiliriz. Ortadaki kodu kırmaktan kaçınmamıza yardımcı olur. Bu, özellikle bu eğitim bağlamıyla ilgili değildir, ancak bunu kodunuzda kullanmanızı hatırlatacaktır.

datetime modülü için bu kadar. Bir sonraki modül dateutil .

Dateutil'i kullanma

dateutil modülü, datetime modülüne uzantılar sağlar. Kolay kullanımlı birçok yöntemle tarih ve saatlerle çalışmayı çok daha kolay hale getirir. Aşağıdaki komut ile modülü yükleyelim.

 pip install python-dateutil

İlgilendiğimiz yöntem dateutil.parser.parse . datetime dizesini datetime nesnesine nasıl dönüştüreceğimizi görelim.

ayrıştırıcı.ayrıştır

parser.parse yöntemi, bir datetime saat dizesi alır ve onu ilgili bir datetime saat nesne biçimine dönüştürür. Bu yöntem için herhangi bir biçimlendirme sağlamamıza gerek yoktur. Verilen datetime dizesini otomatik olarak datetime nesnesine dönüştürür. Bir örnek görelim.

 from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))

Yukarıdaki kodu çalıştırırsanız aşağıdaki çıktıyı göreceksiniz.

 2022-12-19 21:37:56

datetime dizesi, parser.parse yönteminin kabul ettiği belirli bir biçimde olmalıdır. datetime string formatı istenen formata göre değilse bir hata atar. Otomatik dönüştürmeler için kabul ettiği tüm tarih-saat dize biçimlerini kontrol edebilirsiniz.

parser.parse methodu datetime nesnesini döndürdüğü için, datetime modülü ile gördüğümüz gibi date ve time nesnelerine ayrı ayrı erişebiliyoruz. Kodu görelim.

 from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())

Yukarıdaki kodu çalıştırırsanız aşağıdaki çıktıyı görebilirsiniz.

 Date: 2022-12-19 Time: 21:37:56

Gördüğünüz gibi, dateutil , tarih ve saatlerle karşılaştırmalı olarak çalışmayı kolaylaştırır. Modülü belgelerde inceleyebilirsiniz.

Çözüm

datetime dizesini DateTime nesnesine dönüştürmek için bir yerleşik modül ve bir üçüncü taraf modülü kullandık. datetime dizesini, datetime ve dateutil modüllerine benzer bir DateTime nesnesine dönüştürebileceğimiz time adında başka bir yerleşik modül vardır. Kendin dene. Diğer modüllerde de benzer bir şey yaptığınız için zor olmayacaktır.

Aynı şeyi başarabileceğimiz daha fazla kütüphane olabilir. Şey eğitiminde kullandığımız modüller standarttır ve yaygın olarak kullanılmaktadır. Diğer modüller hakkında daha fazlasını keşfedebilir ve size en uygun olanı seçebilirsiniz.

Python'da zaman farkının nasıl hesaplanacağını da keşfedebilirsiniz.

Mutlu Kodlama