Преобразование строки в тип даты на Python
У меня есть эта строка:
'2012-02-10' # (year-month-day)
и мне нужно, чтобы он был как тип даты для использования функции даты isoweekday()
.
Кто-нибудь знает, как я могу преобразовать эту строку в дату?
Ответы
Ответ 1
Вы можете сделать это с помощью datetime.strptime()
Пример:
>>> from datetime import datetime
>>> datetime.strptime('2012-02-10' , '%Y-%m-%d')
datetime.datetime(2012, 2, 10, 0, 0)
>>> _.isoweekday()
5
Вы можете найти таблицу со всей директивой strptime
здесь.
Чтобы увеличить на 2 дня, если .isweekday() == 6
, вы можете использовать timedelta()
:
>>> import datetime
>>> date = datetime.datetime.strptime('2012-02-11' , '%Y-%m-%d')
>>> if date.isoweekday() == 6:
... date += datetime.timedelta(days=2)
...
>>> date
datetime.datetime(2012, 2, 13, 0, 0)
>>> date.strftime('%Y-%m-%d') # if you want a string again
'2012-02-13'
Ответ 2
Хотя кажется, что на вопрос был дан ответ на запрос OP, ни один из ответов не дает хороший способ получить объект datetime.date
вместо datetime.datetime
. Итак, для поиска и поиска этой темы:
datetime.date
не имеет метода .strptime
; используйте вместо него datetime.datetime
, а затем вызовите .date()
на нем, чтобы получить объект datetime.date
.
Так же:
>>> from datetime import datetime
>>> datetime.strptime('2014-12-04', '%Y-%m-%d').date()
datetime.date(2014, 12, 4)
Ответ 3
from datetime import datetime
a = datetime.strptime(f, "%Y-%m-%d")
Ответ 4
Используйте datetime.datetime.strptime
:
>>> import datetime
>>> date = datetime.datetime.strptime('2012-02-10', '%Y-%m-%d')
>>> date.isoweekday()
5
Ответ 5
>>> from datetime import datetime
>>> year, month, day = map(int, my_date.split('-'))
>>> date_object = datetime(year, month, day)