この状態Trueは、時間を比較しているため、同じ日であっても常に評価されます。
from datetime import datetime
# ...
if date_num_posts < datetime.today():
日付がと同じ日datetime.today()かどうかを確認するにはどうすればよいですか?
回答:
日付を比較したいだけなら、
yourdatetime.date() < datetime.today().date()
または、明らかに、
yourdatetime.date() == datetime.today().date()
それらが同じ日付であることを確認したい場合。
通常、ドキュメントは役に立ちます。これは通常、の最初のGoogle検索結果でもありpython thing_i_have_a_question_aboutます。あなたの質問が「ヘビ」という名前の関数/モジュールに関するものでない限り。
基本的に、datetimeモジュールには、特定の時点を格納するための3つのタイプがあります。
date 年、月、日time 時間、分、秒、マイクロ秒、タイムゾーン情報datetime日付と時刻を組み合わせます。これには、対応するオブジェクトとオブジェクトを取得するためのメソッドdate()とがあり、結合してに変換するための便利な関数があります。time()datetimecombinedatetimedatetime月の値のみを比較する必要がある場合は、次のコードを使用できます。
if yourdate.day == datetime.today().day:
# do something
2つの日付の差が許容できることを確認する必要がある場合は、timedeltaを使用できます 。
if (datetime.today() - yourdate).days == 0:
#do something
そして、単に使用できるよりも日付部分のみを比較したい場合:
from datetime import datetime, date
if yourdatetime.date() < datetime.today().date()
# do something
timedeltaの形式は次のとおりです。
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
したがって、本当に必要なものに応じて、日、秒、ミリ秒、分などで差分を確認できます。
from datetime import datetime
if (datetime.today() - yourdate).days == 0:
#do something
2つの日付が完全に同じであることを確認する必要がある場合は、timedelta(0)を使用できます。
from datetime import datetime, timedelta
if (datetime.today() - yourdate) == timedelta(0):
#do something
.dayは月の日です。したがって、8月12日は、最初のコードスニペットを使用した12月12日と「同じ」です。それはおそらくOPが望んでいる振る舞いではありません。
時間、分、秒、マイクロ秒を好きなように設定できます
datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
しかし、真実性の答えは、それらがすべてゼロであり、あなたがただ比較することができるときにおそらく最良です .date()、時間のsを
数百の日時を比較する必要がある場合は、replace()1回の呼び出しと数百の呼び出しを行うだけでよいので、おそらくより高速です。date()