2012-02-29 38 views
20

日期型我有这个字符串:转换串入Python的

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

,我需要它是为最新型我使用的日期功能isoweekday()

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

回答

36

你可以做到这一点与datetime.strptime()

例子:

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

您可以找到表所有strptime指令here


要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' 
+0

@ user1072627:和..做它的工作? – 2012-02-29 18:21:20

+0

这正是我所做的: if datetime.strptime(a,“%Y-%m-%d”)。isoweekday()== 6:PONTO_MOVIMENTO = a – 2012-02-29 18:26:07

+0

还有一个问题......我怎么能给我约会加几天?例如,如果isoweekdday()== 6,我需要在两天内增加日期。有想法我怎么做?再次感谢! – 2012-02-29 18:27:56

5
from datetime import datetime 

a = datetime.strptime(f, "%Y-%m-%d") 
3
>>> from datetime import datetime 
>>> year, month, day = map(int, my_date.split('-')) 
>>> date_object = datetime(year, month, day) 
+1

当我需要一个datetime.date对象时,我使用了类似的东西,而不是一个datetime.datetime对象。不幸的是,datetime.date没有strptime()方法。 – CraigO 2013-09-14 20:42:39

40

虽然现在看来这个问题是根据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) 
+0

这是真正的答案 – Nyxynyx 2017-11-05 15:48:41