web-dev-qa-db-fra.com

Pourquoi datetime.strptime ne fonctionne-t-il pas dans cet exemple simple?

J'utilise strptime pour convertir une chaîne de date en datetime. Selon la page liée, un formatage comme celui-ci devrait fonctionner:

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

Mon code est:

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

sDate = "07/27/2012" (par exemple). (Je comprends, à partir de la même page, que %Y est "Année avec le siècle sous forme décimale."

J'ai essayé de mettre la valeur réelle de sDate dans le code:

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

mais ça ne marche pas. L'erreur que je reçois est: AttributeError: l'objet 'module' n'a pas d'attribut 'strptime'

Qu'est-ce que je fais mal?

51
Wikis

Vous devriez utiliser datetime.datetime.strptime. Notez que les très anciennes versions de Python (2.4 et antérieures) n'ont pas datetime.datetime.strptime; utilisez time.strptime dans ce cas.

59
ecatmur

Vous importez le module datetime, qui n'a pas de fonction strptime.

Ce module a a un objet datetime avec cette méthode si:

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

Sinon, vous pouvez importer l'objet datetime à partir du module:

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

Notez que la méthode strptime a été ajoutée dans python 2.5; Si vous utilisez une version plus ancienne, utilisez plutôt le code suivant:

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

Parce que datetime est le module. La classe est datetime.datetime.

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

Si vous avez créé un fichier dans le dossier "datetime.py" dans le dossier de votre projet

0
Ihor Ivasiuk

Vous pouvez aussi faire ce qui suit pour importer datetime

from datetime import datetime as dt

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

Vous devez utiliser la méthode statique strftime de la classe datetime du module datetime. Essayer:

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