2016-10-25 6 views
1

Im пытается использовать strptime для преобразования дня и времени в поле DateTime. То есть, конвертируйте ввод типа «пятница 3:00 PM» в поле datetime. Событие это происходит в течение трех дней подряд, поэтому я знаю, что в пятницу будет конкретный день в феврале и т. Д.Преобразование из <day><time> в DateTime в python и Django и обратно

Мой вопрос, как я могу это сделать? Как конвертировать, например, в пятницу 15:00 в 2017-02-24 15:00:00?

То, что я сейчас в моем проекте Django, в views.py является:

new_request.start = time.strptime(form.cleaned_data['start'], '%A %I:%M %p') 

Затем я должен распечатать «Пятница 3:00 PM» от поля даты и времени позже, используя STRFTIME, который я бы предположил, является обратным вышесказанному?

Спасибо!

+0

Вы не год в вашей даты «пятница 3:00 PM», вам это нужно, если вы хотите, чтобы преобразовать его в нечто вроде «2017-02-24 15:00:00 « – ettanany

+0

Я знаю, какой будет год, но – PSU2017

+0

Год выпуска установлен на 2017 год? – ettanany

ответ

0

Вы можете адаптировать пример ниже, чтобы достичь того, чего вы хотите, а именно:

import time 

time.strftime("%Y-%d-%m %H:%M:%S", time.strptime('Friday 3 February 2017 3:00PM', '%A %d %B %Y %I:%M%p')) 
# Output: '2017-03-02 15:00:00' 

Если год и месяц зафиксированы до 2017 года и в феврале, как вы упомянули, то «в пятницу 3:00 PM» можно преобразовать следующим образом :

time.strftime("2017-%d-2 %H:%M:%S", time.strptime('Friday 3 3:00PM', '%A %d %I:%M%p')) 
# Output: '2017-03-2 15:00:00' 

Если вы хотите получить datetime объект используйте следующее:

from datetime import datetime 

datetime.strptime('Friday 3 February 2017 3:00PM', '%A %d %B %Y %I:%M%p') 
# Output: datetime.datetime(2017, 2, 3, 15, 0) 
+0

Это должно сделать это! Спасибо! – PSU2017

+0

Только что отредактировал мой ответ, чтобы включить пример создания объекта 'datetime' из строки. – ettanany

0

Вы можете использовать python-dateutil для синтаксического анализа читаемой строки времени для объекта datetime. Это очень удобно и легко использовать.

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

>>> from dateutil.relativedelta import * 
>>> from dateutil.easter import * 
>>> from dateutil.rrule import * 
>>> from dateutil.parser import * 
>>> from datetime import * 
>>> now = parse("Sat Oct 11 17:13:46 UTC 2003") 
>>> today = now.date() 
>>> year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year 
>>> rdelta = relativedelta(easter(year), today) 
>>> print("Today is: %s" % today) 
Today is: 2003-10-11 
>>> print("Year with next Aug 13th on a Friday is: %s" % year) 
Year with next Aug 13th on a Friday is: 2004 
>>> print("How far is the Easter of that year: %s" % rdelta) 
How far is the Easter of that year: relativedelta(months=+6) 
>>> print("And the Easter of that year is: %s" % (today+rdelta)) 
And the Easter of that year is: 2004-04-11