在Python上将字符串转换为Date类型

Luc*_*nde 25 python string date type-conversion

我有这个字符串:

'2012-02-10' # (year-month-day)
Run Code Online (Sandbox Code Playgroud)

我需要它作为日期类型让我使用日期功能isoweekday().

有谁知道如何将此字符串转换为日期?

Dar*_*ody 52

虽然看起来这个问题是根据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)
Run Code Online (Sandbox Code Playgroud)

  • 这才是真正的答案 (4认同)

Rik*_*ggi 43

你可以这样做 datetime.strptime()

例:

>>> from datetime import datetime
>>> datetime.strptime('2012-02-10' , '%Y-%m-%d')
datetime.datetime(2012, 2, 10, 0, 0)
>>> _.isoweekday()
5
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到包含所有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'
Run Code Online (Sandbox Code Playgroud)


f p*_*f p 6

from datetime import datetime

a = datetime.strptime(f, "%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)