08 03 2013 Python SQLAlchemy Tweet
例えば SQLAlchemyである週(今週とか先週)で検索をかけたいとか結構ある(calendar daysじゃなくてworking daysとか)。
そういう時に今日が何曜日か調べて月曜日から金曜日までのたし引きをするのがすぐに思いつくんだけどスマートじゃないのでちょっと調べたらdatetime.isocalendarっていうメソッドで今日が今年の第何週かが返ってくる。
というわけなので、週の1日目(月曜)と5日目(金曜)を探せばいい。
>>> from datetime import datetime >>> today = datetime.now() >>> today datetime.datetime(2013, 3, 8, 18, 48, 12, 860947)>>> today.isocalendar() (2013, 10, 5) >>> ti = today.isocalendar() >>> datetime.strptime("{} {} {}".format(ti[0], ti[1], 1), "%Y %W %w") datetime.datetime(2013, 3, 11, 0, 0)
ん、次の週の月曜日を指している?
というところがハマったポイントでisocalendarは1からはじまるけど%Wは0からはじまるみたい。
なので第何週目かから1を引いておく
>>> datetime.strptime("{} {} {}".format(ti[0], ti[1]-1, 1), "%Y %W %w") datetime.datetime(2013, 3, 4, 0, 0) >>> datetime.strptime("{} {} {}".format(ti[0], ti[1]-1, 5), "%Y %W %w") datetime.datetime(2013, 3, 8, 0, 0)
あとはデータベースに問い合わせをすればよい。