web-dev-qa-db-fra.com

Convertir une chaîne avec date et heure en date

J'ai cette chaîne de date/heure:

post["date"] = "2007-07-18 10:03:19"

J'aimerais seulement extraire "2007-07-18" comme date. J'ai déjà vu des références à strptime mais je ne sais pas comment l'utiliser. Comment puis-je extraire la date de cette chaîne?

22
Alex

Les deux autres réponses sont correctes, mais si vous voulez réellement la date pour autre chose, vous pouvez utiliser le module datetime:

from datetime import datetime
d = datetime.strptime('2007-07-18 10:03:19', '%Y-%m-%d %H:%M:%S')
day_string = d.strftime('%Y-%m-%d')

C'est peut-être un peu exagéré pour l'instant, mais cela s'avérera utile. Vous pouvez voir tous les spécificateurs de format ici .

57
babbageclunk

Dans votre cas, utilisez simplement split:

>>> d1="2007-07-18 10:03:19"
>>> d1.split()[0]
'2007-07-18'
>>> 

(La 1ère partie après la séparation avec des espaces)

Si vous insistez pour utiliser strptime, le format est "%Y-%m-%d %H:%M:%S":

>>> import time
>>> time.strptime(d1,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2007, tm_mon=7, tm_mday=18, tm_hour=10, tm_min=3, tm_sec=19, tm_wday=2, tm_yday=199, tm_isdst=-1)
>>> time.strftime("%Y-%m-%d", _)
'2007-07-18'
>>> 
8
gimel

Probablement pas ce que vous cherchez mais vous pouvez simplement fendre la chaîne:

post["date"].split()[0]

vous donnerait '2007-07-18'

2
Ashy

Vous pouvez utiliser https://pypi.python.org/pypi/python-dateutil qui peut prendre en charge tout format de date/heure, par exemple:

>>> from dateutil.parser import parse
>>> d1="2007-07-18 10:03:19"
>>> date_obj = parse(d1)
>>> date_obj
datetime.datetime(2007, 7, 18, 10, 3, 19)
>>> date_obj.strftime("%Y-%m-%d")
'2007-07-18'
>>> d2 = "18-07-2007 10:03:19"
>>> d = parse(d2)
>>> d
datetime.datetime(2007, 7, 18, 10, 3, 19)
>>> d.strftime("%Y-%m-%d")
'2007-07-18'
2
PBD

Vous pouvez utiliser le module mx.DateTime à partir de eGenix

import mx

date_object = mx.DateTime.Parser.DateTimeFromString('2007-07-18 10:03:19')
print "%s-%s-%s" % (date_object.year, date_object.month, date_object.day)

affichera: 2007-07-18

1
Oli

Vous pouvez utiliser le module parsedatetime .

>>> from parsedatetime.parsedatetime import Calendar
>>> c = Calendar()
>>> c.parse("2007-07-18 10:03:19")
((2008, 11, 19, 10, 3, 19, 2, 324, 0), 2)
1
lutz
import dateutil.parser
a = "2007-07-18 10:03:19"
d = dateutil.parser.parse(b).date()

Votre sortie sera comme ça **

datetime.date (2007, 07, 18)

**

0
Ahir Kamlesh