2012-02-29 15 views

risposta

36

È possibile farlo con datetime.strptime()

Esempio:

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

È possibile trovare la tabella con tutte le direttiva herestrptime.


per incrementare da 2 giorni se .isweekday() == 6, è possibile utilizzare 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: E .. ha fatto ha funzionato? –

+0

Questo è esattamente ciò che ho fatto: se datetime.strptime (a, "% Y-% m-% d"). Isoweekday() == 6: PONTO_MOVIMENTO = a –

+0

Solo un'altra domanda ... come posso aggiungere giorni alla mia data? Ad esempio, se isoweekdday() == 6, ho bisogno di incrementare la data in 2 giorni. Hai idea di come lo faccio? Grazie ancora! –

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

Ho usato qualcosa di simile quando avevo bisogno di un oggetto datetime.date, NON di un oggetto datetime.datetime. Sfortunatamente, datetime.date non ha un metodo strptime(). – CraigO

40

Mentre sembra la domanda era risposto per ogni richiesta dell'OP, nessuna delle risposte fornisce un buon modo per ottenere un oggetto datetime.date invece di un datetime.datetime. Quindi per chi cerca e trova questo thread:

datetime.date non ha il metodo .strptime; utilizzare quello su datetime.datetime invece e quindi chiamare .date() su di esso per ricevere l'oggetto datetime.date.

Come così:

>>> from datetime import datetime 
>>> datetime.strptime('2014-12-04', '%Y-%m-%d').date() 
datetime.date(2014, 12, 4) 
+0

Questa è la vera risposta – Nyxynyx