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

Python: дать данные о начале и конце недели с определенной даты

day = "13/Oct/2013"
print("Parsing :",day)
day, mon, yr= day.split("/")
sday = yr+" "+day+" "+mon
myday = time.strptime(sday, '%Y %d %b')
Sstart = yr+" "+time.strftime("%U",myday )+" 0"
Send = yr+" "+time.strftime("%U",myday )+" 6"
startweek = time.strptime(Sstart, '%Y %U %w')
endweek = time.strptime(Send, '%Y %U %w')
print("Start of week:",time.strftime("%a, %d %b %Y",startweek))
print("End of week:",time.strftime("%a, %d %b %Y",endweek))
print("Data entered:",time.strftime("%a, %d %b %Y",myday))

out:
Parsing : 13/Oct/2013
Start of week: Sun, 13 Oct 2013
End of week: Sat, 19 Oct 2013
Sun, 13 Oct 2013

Изучил python за последние 2 дня и задавался вопросом, есть ли более чистый способ сделать это. Этот метод работает... он просто выглядит уродливым и кажется глупым создавать новую временную переменную для каждой даты, и что должен быть способ компенсировать данную дату в начале и конце недели простым вызовом, но я не смог найти что-либо в Интернете или документацию, которая выглядит так, как будто это сработает.

4b9b3361

Ответ 1

Используйте модуль datetime.

Это даст начало и конец недели (с понедельника по воскресенье):

from datetime import datetime, timedelta

day = '12/Oct/2013'
dt = datetime.strptime(day, '%d/%b/%Y')
start = dt - timedelta(days=dt.weekday())
end = start + timedelta(days=6)
print(start)
print(end)

EDIT:

print(start.strftime('%d/%b/%Y'))
print(end.strftime('%d/%b/%Y'))