🐍

Pythonでtimeのみを利用して近しい特定の曜日を指定する。

2021/01/19に公開

背景

色々やり方はあると思いますが、個人的に利用した方法をまとめておきます。

結論

各曜日を指定した場合は下記

sunday   =time.time()+(time.localtime().tm_wday-3)*60*60*24
monday   =time.time()+(time.localtime().tm_wday-2)*60*60*24
tuesday  =time.time()+(time.localtime().tm_wday-1)*60*60*24
wednesday=time.time()+(time.localtime().tm_wday+0)*60*60*24
thursday =time.time()+(time.localtime().tm_wday+1)*60*60*24
friday   =time.time()+(time.localtime().tm_wday+2)*60*60*24
saturday =time.time()+(time.localtime().tm_wday+3)*60*60*24

結果はエポックからの秒数を浮動小数点数で返します。
参照:https://docs.python.org/ja/3/library/time.html#time.localtime

解説

time.time()で現在の時刻を取得します。
time.localtime()で現在の時刻を表す構造体を返します。
その中の値であるtm_wdayには曜日を表す、月曜日:0〜日曜日:6の値が入っています。
これを基準に1日の秒数60*60*24を足し引きすると特定の曜日を取得する事ができます。

文字列化

下記のような形です。

time.strftime("%Y/%m/%d %H:%M:%S",time.localtime(
	time.time()+(time.localtime().tm_wday+3)*60*60*24
))

タイムゾーンの設定には気をつけてください…

Discussion