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?
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 .
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'
>>>
Probablement pas ce que vous cherchez mais vous pouvez simplement fendre la chaîne:
post["date"].split()[0]
vous donnerait '2007-07-18'
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'
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
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)
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)
**