2008-11-19 12 views
22

Mam ten ciąg data Godzina:przekonwertować ciąg z datą i godziną do daty

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

Chciałbym, aby wyodrębnić tylko „2007-07-18” jako data. Widziałem pewne odniesienie do strptime, ale nie jestem pewien, jak z niego korzystać. Jak mogę wyodrębnić datę z tego ciągu?

+0

możliwe duplikat [data analizowania i formatować je przy użyciu Pythona?] (Http://stackoverflow.com/questions/2265357/parse-date-and-format-it-using-python) – davidism

Odpowiedz

54

Pozostałe dwie odpowiedzi są w porządku, ale jeśli rzeczywiście chcą datę na coś innego, można użyć modułu 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') 

To może być przesadą teraz, ale przydaje się. Możesz zobaczyć wszystkie specyfikatory formatu here.

+0

czy możesz powiedzieć mi format "Śro 17 grudnia 14:58:39 IST 2014"? –

+0

@DinoopNair powinien to być format, którego szukasz: "% a% b% d% H:% M:% S% Z% Y" –

7

W Twoim przypadku, wystarczy użyć dzielone: ​​

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

(1. część po rozdzieleniu ze spacjami)

Jeśli nalegać na użyciu strptime, format jest "%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' 
>>> 
+2

aby uniknąć IndexError dla pustych danych, możesz użyć 'd1.partition ('') [0]' – jfs

2

Prawdopodobnie nie to, czego szukasz, ale możesz po prostu podzielić ciąg znaków:

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

nie daje '2007-07-18'

1

można użyć modułu mx.DateTime od 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) 

wyjściem będzie: 2007-07-18

0

można użyć modułu 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) 
2

Można użyć https://pypi.python.org/pypi/python-dateutil który może obsługiwać dowolną formacie datetime np

>>> 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' 
0
import dateutil.parser 
a = "2007-07-18 10:03:19" 
d = dateutil.parser.parse(b).date() 

wyjściowego będzie tak **

datetime.date (2007, 07, 18)

**

Powiązane problemy