2012-08-22 6 views
43

Używam strptime do konwersji ciągu daty na datetime. Według połączonej strony, formatowanie jak to powinno działać:Dlaczego datetime.strptime nie działa w tym prostym przykładzie?

>>> # Using datetime.strptime() 
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") 

Mój kod to:

import datetime 
dtDate = datetime.strptime(sDate,"%m/%d/%Y") 

gdzie sDate = "07/27/2012" (na przykład). (Rozumiem, z tej samej strony, że %Y jest „Rok z wieku jako liczbę dziesiętną.”)

Próbowałem oddanie rzeczywistej wartości sDate do kodu:

dtDate = datetime.strptime("07/27/2012","%m/%d/%Y") 

ale to nie działa. Wystąpił błąd: AttributeError: obiekt 'module' nie ma atrybutu 'strptime'

Co robię źle?

+0

Jaki jest błąd dostać? –

+1

Błąd prawdopodobnie polega na tym, że funkcja nie znajduje się w module. Spróbuj importować datetime z datetime. Lub wywołaj jako datetime.datetime.strptime – jrdn

+0

@MartijnPieters: thanks. Jak tylko to opublikowałem, zdałem sobie sprawę, że powinienem to dodać ... :) – Wikis

Odpowiedz

46

Powinieneś używać datetime.datetime.strptime. Zauważ, że bardzo stare wersje Pythona (2.4 i starsze) nie mają datetime.datetime.strptime; użyj time.strptime w takim przypadku.

+2

To wszystko, dzięki! Używam prehistorycznego Pythona 2.3! – Wikis

+11

Należy zaktualizować wersję Pythona tak szybko, jak to będzie możliwe. –

6

Ponieważ datetime jest modułem. Klasa to datetime.datetime.

import datetime 
dtDate = datetime.datetime.strptime(sDate,"%m/%d/%Y") 
+1

Dzięki, ale otrzymuję: ** AttributeError: obiekt typu "datetime.datetime" nie ma atrybutu "strptime" ** – Wikis

+0

@ WIKIS: Czy masz inny moduł o nazwie 'datetime' w swoim projekcie? –

+0

Nie. "Datetime" jest używane w innym miejscu: 'now = datetime.datetime.teraz() 'jeśli to jest jakaś pomoc. – Wikis

16

importujesz datetime moduł, który nie posiada strptime funkcję.

To moduł robi mają datetime obiekt z tej metody jednak:

import datetime 
dtDate = datetime.datetime.strptime(sDate, "%m/%d/%Y") 

Alternatywnie można zaimportować obiekt datetime z modułu:

from datetime import datetime 
dtDate = datetime.strptime(sDate, "%m/%d/%Y") 

Zauważmy, że metoda strptime dodano w pythonie 2.5; Jeśli używasz starszej wersji użyć następującego kodu:

import datetime, time 
dtDate = datetime.datetime(*time.strptime(sDate, "%m/%d/%Y")[:6]) 
0

Należy użyć strftime metody statyczne z klasy z modułem datetimedatetime. Wypróbuj:

import datetime 
dtDate = datetime.datetime.strptime("07/27/2012", "%m/%d/%Y") 
0

Można także wykonać następujące czynności, aby import datetime

from datetime import datetime as dt 

dt.strptime(date, '%Y-%m-%d')