🐍
Pythonでtimeのみを利用して近しい特定の曜日を指定する。
背景
色々やり方はあると思いますが、個人的に利用した方法をまとめておきます。
結論
各曜日を指定した場合は下記
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