これまで当ブログでは、datetimeを利用して翌月の同時刻のような計算を行ってきましたが、本日は30日後の23:59とか00:00などの固定時間を作成する方法を紹介します。
コンテンツ
作成のきっかけ
例えば支払いを行えば、30日後(datetime.timedelta(days=30))のいついつまで利用できます、というギミックを作成しているとします。
この例でいけば、現在操作中の時刻に単純に日付が30日だけプラスされるわけで、19時35分に操作をしていた場合は表示は上のようになります。
仮にちょっと気持ちがためらってしまったり、ブラウザを開いた状態のままで放置して戻ってきた場合、この有効期限は変わる可能性があります。
ではどうしたいのかというと下のようになるべきです。
これだと当日中のいつ支払いを行ったとしても有効期限は総じて同じになるわけです。
当記事ではこちらの時間をdatetimeを利用して作成していきます。
書いたコード
書いたコードが以下になります。
basetimeという00時00分を用意しておき、そこからsecondsを1秒引けば、23時59分になるというロジックです。
1 2 3 4 5 6 7 |
import datetime dt_now = datetime.datetime.now() after_thirty_one_days = dt_now + datetime.timedelta(days=31) basetime = datetime.time(00, 00, 00) expired_at = datetime.datetime.combine(after_thirty_one_days, basetime) - datetime.timedelta(seconds=1) |
combine()は、日付と与えられたdateオブジェクトが等しく、時刻と与えられたtimeオブジェクトが等しい場合に、新しいdatetimeオブジェクトを返します。
以上。
最後に
いかがでしたでしょうか。
以上が、「【Python】datetimeで30日後の23:59とか固定日付を作成する」の紹介記事になります。
コメントを残す