2013-07-25 5 views
1

У меня есть ситуации, когда мне нужно найти предыдущую дату из date_entry где date_entry является строка, мне удалось это сделать:Python преобразовать строку даты в дату питона и вычитать

>>> from datetime import timedelta, datetime 
>>> from time import strptime, mktime 
>>> date_str = '20130723' 
>>> date_ = strptime(date_str, '%Y%m%d') 
>>> date_ 
time.struct_time(tm_year=2013, tm_mon=7, tm_mday=23, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=204,tm_isdst=-1) 
>>> datetime.fromtimestamp(mktime(date_))-timedelta(days=1) 
datetime.datetime(2013, 7, 22, 0, 0) 
>>> 

Но для этого Мне нужно импортировать модули timedelta, datetime, strptime и mktime. Я думаю, что это действительно перебор, чтобы решить эту простую проблему.

Есть ли более элегантный способ решить эту проблему (используя Python 2.7)?

ответ

5

Просто используйте datetime.datetime.strptime метод класса:

>>> import datetime 
>>> date_str = '20130723' 
>>> datetime.datetime.strptime(date_str, '%Y%m%d') - datetime.timedelta(days=1) 
datetime.datetime(2013, 7, 22, 0, 0) 
+0

Спасибо. Я не знал, что мы можем импортировать strptime из datetime. –

+0

@JohnPrawyn, импорт strptime? Нет, 'datetime.datetime.strptime' отличается от' time.strptime'. – falsetru

+1

'datetime.datetime.strptime' возвращает объект datetime, а' time.strptime' возвращает объект 'time.struct_time'. – falsetru

Смежные вопросы