Python'da String'i Date time Nesnesine Nasıl Dönüştürebilirim?

0 Hisse senetleri
0
0
0
0

giriiş

Python'ın datetime ve time modüllerinin her ikisi de dizeleri nesnelere dönüştürmek için strptime() adlı bir sınıf yöntemi içerir.

Bu makalede, stringleri datetime nesnelerine dönüştürmek için strptime() fonksiyonunu ve struct_time() fonksiyonunu kullanacaksınız.

`datetime.strptime()` kullanarak dizeyi `datetime` nesnesine dönüştürün.

`datetime.strptime()` metodunun sözdizimi şu şekildedir:

datetime.strptime(date_string, format)

`datetime.strptime()` metodu, format tarafından ayrıştırılan `date_string`'e karşılık gelen bir `datetime` nesnesi döndürür. Her iki argüman da zorunludur ve dize olmalıdır.

`datetime.strptime()` içinde kullanılan biçimlendirme komutları hakkında daha fazla bilgi için, Python belgelerindeki `strftime()` ve `strptime()` biçimlendirme kodlarına bakın.

Dizeyi datetime.datetime() nesnesine dönüştürme örneği

Aşağıdaki örnek, bir tarih ve saat dizesini datetime.datetime() nesnesine dönüştürür ve elde edilen nesnenin sınıf adını ve değerini yazdırır:

from datetime import datetime
datetime_str = '09/19/22 13:55:26'
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')
print(type(datetime_object))
print(datetime_object) # printed in default format

Çıktı şu şekildedir:

<class 'datetime.datetime'>
2022-09-19 13:55:26

Dizeyi datetime.date() nesnesine dönüştürme örneği

Aşağıdaki örnek, bir tarih dizesini datetime.date() nesnesine dönüştürür ve elde edilen nesnenin sınıf türünü ve değerini yazdırır:

from datetime import datetime
date_str = '09-19-2022'
date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object) # printed in default format

Çıktı şu şekildedir:

<class 'datetime.date'>
2022-09-19

Dizeyi datetime.time() nesnesine dönüştürme örneği

Aşağıdaki örnek, bir zaman dizesini datetime.time() nesnesine dönüştürür ve elde edilen nesnenin sınıf türünü ve değerini yazdırır:

from datetime import datetime
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)

Çıktı şu şekildedir:

<class 'datetime.time'>
13:55:26

Yerel örnek kullanarak dizeyi datetime.datetime() türüne dönüştürün.

Aşağıdaki örnek, Almanca yerel tarih dizesini bir datetime.datetime() nesnesine dönüştürür ve elde edilen nesnenin sınıf türünü ve değerini yazdırır:

from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag' # de_DE locale
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)

Çıktı şu şekildedir:

<class 'datetime.datetime'>
2022-12-16 00:00:00

Unutmayın ki, elde edilen nesne giriş dizesindeki haftanın günü adını içermez, çünkü datetime.datetime() nesnesi haftanın gününü yalnızca ondalık sayı olarak içerir.

time.strptime() kullanarak bir dizeyi struct_time() nesnesine dönüştürün.

`time.strptime()` metodunun sözdizimi şu şekildedir:

time.strptime(time_string[, format])

`time.strptime()` metodu, format tarafından ayrıştırılan `time_string`'e karşılık gelen bir `time.struct_time()` nesnesi döndürür. `time_string` zorunludur ve her iki argüman da dize olmalıdır. Format belirtilmezse, varsayılan değer şudur:

'%a %b %d %H:%M:%S %Y'

Bu, ctime() fonksiyonunun döndürdüğü formatla eşleşiyor.

time.strptime() ve time.strftime() fonksiyonlarının biçimlendirme komutları aynıdır.

Verilen örnek formatı kullanarak dizeyi struct_time() nesnesine dönüştürün.

Aşağıdaki örnek, format argümanı sağlanarak bir zaman dizesini time.struct_time() nesnesine dönüştürür ve elde edilen nesnenin değerini yazdırır:

import time
time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)

Çıktı şu şekildedir:

A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)

Çıktıda da görüldüğü gibi, bir dizeyi time.struct_time() nesnesine dönüştürdüğünüzde, strptime() yöntemi, format bağımsız değişkeninde tanımlanmayan tüm format talimatları için yer tutucu değerler kullanır.

Varsayılan formatı kullanarak dizeyi struct_time() nesnesine dönüştürün.

Bir zaman dizesini `time.struct_time()` nesnesine dönüştürürken format argümanı belirtmezseniz, varsayılan format kullanılacak ve giriş dizesi varsayılan formatla tam olarak eşleşmiyorsa hata oluşacaktır:

 '%a %b %d %H:%M:%S %Y'

Aşağıdaki örnek, herhangi bir format argümanı kullanmadan bir zaman dizesini time.struct_time() nesnesine dönüştürür ve elde edilen nesnenin değerini yazdırır:

import time
# default format - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)

Çıktı şu şekildedir:

A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)

Çıktıda da görüldüğü gibi, bir dizeyi time.struct_time() nesnesine dönüştürdüğünüzde, strptime() yöntemi, format bağımsız değişkeninde tanımlanmayan veya format belirtilmediğinde varsayılan olarak kullanılan format talimatları için yer tutucu değerler kullanır.

strptime() hatalarının giderilmesi.

Eğer giriş dizesi strptime() tarafından sağlanan format kullanılarak ayrıştırılamazsa, bir ValueError hatası oluşur. Ayrıştırma hatalarını test etmek için bir try bloğu ve sonuçları yazdırmak için bir else bloğu kullanabilirsiniz. strptime() yöntemini kullanırken aldığınız ValueError mesajları, ayrıştırma hatalarının ana nedenlerini açıkça açıklar. Aşağıdaki örnek, fazladan veri ve format uyuşmazlığı gibi bazı yaygın hataları göstermektedir:

from datetime import datetime
import time
datetime_str = '09/19/18 13:55:26'
try:
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
print('ValueError 1:', ve1)
time_str = '99::55::26'
try:
time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
print('ValueError 2:', ve2)

Çıktı şu şekildedir:

ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'

Sonuç

Bu eğitimde, Python kullanarak tarih ve saat metinlerini tarih ve saat nesnelerine dönüştürdünüz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz