2012-02-29 19 views

Odpowiedz

36

można zrobić z datetime.strptime()

Przykład:

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

można znaleźć tabelę z wszystkimi dyrektywy herestrptime.


Aby zwiększyć o 2 dni, jeśli .isweekday() == 6, można użyć 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: A .. tak to działało? –

+0

To było dokładnie to, co zrobiłem: jeśli datetime.strptime (a, "% Y-% m-% d"). Isoweekday() == 6: PONTO_MOVIMENTO = a –

+0

Jeszcze jedno pytanie ... jak mogę dodać dni do mojej daty? Na przykład, jeśli isoweekdday() == 6, muszę zwiększyć datę w ciągu 2 dni. Masz pomysł, jak to zrobić? Dzięki jeszcze raz! –

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

Użyłem czegoś takiego, kiedy potrzebowałem obiektu datetime.date, a nie obiektu datetime.datetime. Niestety datetime.date nie ma metody strptime(). – CraigO

40

Chociaż wydaje się, że pytanie było odpowiedział na wniosek OP, żadna z odpowiedzi nie daje dobrego sposobu na uzyskanie obiektu datetime.date zamiast datetime.datetime. Tak więc dla tych, którzy szukają i znajdują ten wątek:

datetime.date nie ma metody .strptime; użyj go na datetime.datetime, a następnie zadzwoń pod numer .date(), aby odebrać obiekt datetime.date.

tak:

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

To jest prawdziwa odpowiedź – Nyxynyx