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

Преобразование строки в тип даты на Python

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

'2012-02-10' # (year-month-day)

и мне нужно, чтобы он был как тип даты для использования функции даты isoweekday().

Кто-нибудь знает, как я могу преобразовать эту строку в дату?

4b9b3361

Ответ 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)