Dizeler halinde bunun gibi tarih-saatlerden oluşan büyük bir listem var:
Jun 1 2005 1:33PM
Aug 28 1999 12:00AM
Bunları bir veritabanındaki uygun datetime alanlarına geri göndereceğim, bu yüzden onları gerçek datetime nesnelerine dönüştürmem gerekiyor.
Bu, Django'nun ORM'sinden geçiyor, bu yüzden ekleme sırasında dönüştürme yapmak için SQL kullanamıyorum.
datetime.strptime
dizeleri tarih saatlerine ayrıştırmak için kullanılan ana rutindir. Verdiğiniz bir biçim dizesi tarafından belirlenen biçim ile her türlü biçimi işleyebilir:
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
Elde edilen datetime
nesnesi zaman diliminden bağımsızdır.
Bağlantılar:
Strptime/strftime
biçim dizeleri için Python belgeleri: Python 2, Python 3
strftime.org ayrıca strftime için gerçekten güzel bir referanstır
Notlar:
strptime
= "string parse time"strftime
= "string format time"Üçüncü taraf dateutil kütüphanesini kullanın:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Ayrıştırmanız gereken de dahil olmak üzere çoğu tarih biçimini işleyebilir. Çoğu zaman doğru biçimi tahmin edebildiği için strptime
dan daha kullanışlıdır.
Okunabilirliğin performanstan daha önemli olduğu testler yazmak için çok kullanışlıdır.
İle yükleyebilirsiniz:
pip install python-dateutil
time]2 modülündeki strptime öğesine göz atın. Bu strftime'ün tersidir.
$ python
>>> import time
>>> time.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
tm_hour=13, tm_min=33, tm_sec=0,
tm_wday=2, tm_yday=152, tm_isdst=-1)