Подтвердить что ты не робот

Преобразование строки с датой и временем до даты

У меня есть строка даты даты:

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

Я хочу извлечь только "2007-07-18" в качестве даты. Я видел некоторую ссылку на strptime, но я не уверен, как ее использовать. Как я могу извлечь дату из этой строки?

4b9b3361

Ответ 1

Остальные два ответа хороши, но если вы действительно хотите получить что-то еще, вы можете использовать модуль 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')

На данный момент это может быть излишним, но это пригодится. Вы можете увидеть все спецификаторы формата здесь.

Ответ 2

В вашем случае просто используйте split:

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

(1-я часть после расщепления пробелами)

Если вы настаиваете на использовании strptime, формат "%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'
>>> 

Ответ 3

Вероятно, не то, что вы ищете, но вы можете просто разделить строку:

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

даст вам '2007-07-18'

Ответ 4

Вы можете использовать https://pypi.python.org/pypi/python-dateutil, который может поддерживать любой формат datetime, например:

>>> 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'

Ответ 5

Вы можете использовать модуль mx.DateTime из 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)

выведет: 2007-07-18

Ответ 6

Вы можете использовать модуль 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)

Ответ 7

import dateutil.parser
a = "2007-07-18 10:03:19"
d = dateutil.parser.parse(b).date()

Ваш результат будет таким: **

datetime.date(2007, 07, 18)

**