2015-05-07 15 views
13

aldım.değişkenine sahip, 4/25/2015 gibi bir metin biçiminde bir tarihe sahibim. Ben şöyle %Y-%m-%d %H:%M:%S dönüştürmek çalışıyorum:TypeError: descriptor 'strftime' bir 'datetime.date' nesnesini gerektirir, ancak 'Text'

dt_str = datetime.strftime(testeddate,'%Y-%m-%d %H:%M:%S') 

ama bu hatayla ediyorum:

TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'Text' 

Bunu nasıl çözebilirim?

+1

'datetime.strftime' statik bir yöntem değildir, gerçek bir' datetime' nesne üzerinde demen gerekiyor. date.strftime – jonny

+0

@jonny - bu datetime.datetime.strftime – user2125827

+0

gibi bir şey kullanmam gerektiği anlamına gelir ['strftime()' ve 'strptime()' Davranış] 'a bakın (https://docs.python.org/2/library/ datetime.html # strftime-and-strptime-davranış) – tynn

cevap

18

Text nesnesiniz var. strftime işlevi, bir datetime nesnesi gerektirir. Aşağıdaki kod Bu noktada strptime

import datetime 
testeddate = '4/25/2015' 
dt_obj = datetime.datetime.strptime(testeddate,'%m/%d/%Y') 

kullanarak Textdatetime bir dönüştürme ilişkin bir ara kademeyi alır dt_obj bir tarih saat amacıdır. Bu, herhangi bir formatta bir dizgeye kolayca dönüştürebileceğimiz anlamına gelir. sizin özel durumda:

dt_str = datetime.datetime.strftime(dt_obj,'%Y-%m-%d %H:%M:%S') 

dt_str artık şudur:

'2015-04-25 00:00:00' 
+3

Ya da sadece kullanabilirsiniz: dt_str = datetime.strptime (testingdate, '% m /% d /% Y') strftime ('% Y-% d% H:% M:% S') import: datetime import datetime öğesinden –

+0

hata alıyorum 'AttributeError: type object' datetime.datetime '' dt_obj = datetime.datetime.strptime 'datetime' özniteliği yoktur (testingdate, '% m /% d/% Y ') – user2125827

+1

İçe aktarma ifadeniz nedir? Eğer sadece import datetime'a gidecekseniz, sahip olduğum gibi çalışacaktır. Eğer datetime import datetime 'dan yapıyorsanız bu satırı dt_obj = datetime.strptime olarak değiştirin (testingdate, '% m /% d /% Y')' – Andy

0

Daha az zarif çözüm doğrudan dize manipüle içerecektir. https://docs.python.org/2/library/datetime.html#datetime:

testeddate = '4/25/2015' 
month, day, year = testeddate.split('/') 
testeddate = '-'.join([year, month, day]) + ' 00:00:00' 
İlgili konular