web-dev-qa-db-fra.com

Python chaîne de date à objet de date

Comment convertir une chaîne en objet date en python?

La chaîne serait: "24052010" (correspondant au format: "%d%m%Y")

Je ne veux pas d'objet datetime.datetime, mais plutôt un datetime.date.

307
elif

Vous pouvez utiliser strptime dans le package datetime de Python:

>>> import datetime
>>> datetime.datetime.strptime('24052010', "%d%m%Y").date()
datetime.date(2010, 5, 24)
524
SilentGhost
import datetime
datetime.datetime.strptime('24052010', '%d%m%Y').date()
79
ThiefMaster

Question directement liée:

Et si vous avez

datetime.datetime.strptime("2015-02-24T13:00:00-08:00", "%Y-%B-%dT%H:%M:%S-%H:%M").date()

et vous obtenez:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/_strptime.py", line 308, in _strptime
    format_regex = _TimeRE_cache.compile(format)
  File "/usr/local/lib/python2.7/_strptime.py", line 265, in compile
    return re_compile(self.pattern(format), IGNORECASE)
  File "/usr/local/lib/python2.7/re.py", line 194, in compile
    return _compile(pattern, flags)
  File "/usr/local/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: redefinition of group name 'H' as group 7; was group 4

et vous avez essayé:

<-24T13:00:00-08:00", "%Y-%B-%dT%HH:%MM:%SS-%HH:%MM").date()

mais vous obtenez toujours la trace ci-dessus.

Réponse:

>>> from dateutil.parser import parse
>>> from datetime import datetime
>>> parse("2015-02-24T13:00:00-08:00")
datetime.datetime(2015, 2, 24, 13, 0, tzinfo=tzoffset(None, -28800))
48
Schopenhauer

Si vous êtes paresseux et que vous ne voulez pas vous battre avec des littéraux de chaîne, vous pouvez simplement utiliser le module parser.

from dateutil import parser
dt = parser.parse("Jun 1 2005  1:33PM")
print(dt.year, dt.month, dt.day,dt.hour, dt.minute, dt.second)
>2005 6 1 13 33 0

Juste ne note de côté, comme nous essayons de faire correspondre la représentation de chaîne any, elle est 10 fois plus lente que strptime

20
user1767754

Il existe une autre bibliothèque appelée arrow vraiment géniale de pouvoir manipuler le python la date.

import arrow
import datetime

a = arrow.get('24052010', 'DMYYYY').date()
print(isinstance(a, datetime.date)) # True
3
Owl Max

vous avez une chaîne de date comme celle-ci, "24052010" et vous voulez un objet de date pour cela,

from datetime import datetime
cus_date = datetime.strptime("24052010", "%d%m%Y").date()

ce cus_date vous donnera un objet date.

vous pouvez récupérer la chaîne de date de votre objet de date en utilisant ceci,

cus_date.strftime("%d%m%Y")
2

Utilisez le module de temps pour convertir les données.

Extrait de code:

import time 
tring='20150103040500'
var = int(time.mktime(time.strptime(tring, '%Y%m%d%H%M%S')))
print var
1
shashankS