web-dev-qa-db-ja.com

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日間で、これを行うためのよりクリーンな方法があるかどうか疑問に思っていました。この方法は機能します...各日付の変数、および単純な呼び出しを介して特定の日付を週の始まりと終わりにオフセットする方法があるはずですが、インターネットまたはドキュメントで動作するように見えるものを見つけることができませんでした.

52
shadowtdt09

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)

編集:

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

標準の時刻形式を維持し、現在の日付を参照する場合は、わずかなバリエーションがあります。

from datetime import datetime, timedelta

today = datetime.now().date()
start = today - timedelta(days=today.weekday())
end = start + timedelta(days=6)
print("Today: " + str(today))
print("Start: " + str(start))
print("End: " + str(end))
11
palamunder

振り子モジュールを使用します

    today = pendulum.now()
    start = today.start_of('week')
    end = today.end_of('week')
3
ogeretal