web-dev-qa-db-fra.com

Convertir une chaîne en Datetime dans Python

J'ai cette chaîne:

'2012-02-10' # (year-month-day)

et j'ai besoin que ce soit comme type de date pour que j'utilise la fonction de date isoweekday().

Est-ce que quelqu'un sait comment convertir cette chaîne en une date?

24
Lucas Rezende

Vous pouvez le faire avec datetime.strptime()

Exemple:

>>> from datetime import datetime
>>> datetime.strptime('2012-02-10' , '%Y-%m-%d')
datetime.datetime(2012, 2, 10, 0, 0)
>>> _.isoweekday()
5

Vous pouvez trouver le tableau avec toutes les directives strptimeici .


Pour incrémenter de 2 jours si .isweekday() == 6, vous pouvez utiliser timedelta() :

>>> import datetime
>>> date = datetime.datetime.strptime('2012-02-11' , '%Y-%m-%d')
>>> if date.isoweekday() == 6:
...     date += datetime.timedelta(days=2)
... 
>>> date
datetime.datetime(2012, 2, 13, 0, 0)
>>> date.strftime('%Y-%m-%d')   # if you want a string again
'2012-02-13'
42
Rik Poggi

Bien qu'il semble que la question ait été répondue conformément à la demande du PO, aucune des réponses ne donne un bon moyen d'obtenir un objet datetime.date Au lieu d'un datetime.datetime. Donc, pour ceux qui recherchent et trouvent ce fil:

datetime.date N'a pas de méthode .strptime; utilisez plutôt celui sur datetime.datetime puis appelez .date() dessus pour recevoir l'objet datetime.date.

Ainsi:

>>> from datetime import datetime
>>> datetime.strptime('2014-12-04', '%Y-%m-%d').date()
datetime.date(2014, 12, 4)
48
Darian Moody
from datetime import datetime

a = datetime.strptime(f, "%Y-%m-%d")
6
f p
>>> from datetime import datetime
>>> year, month, day = map(int, my_date.split('-'))
>>> date_object = datetime(year, month, day)
3
Fred

Utilisation datetime.datetime.strptime :

>>> import datetime
>>> date = datetime.datetime.strptime('2012-02-10', '%Y-%m-%d')
>>> date.isoweekday()
5
3
phihag