Pythonで時間を比較するにはどうすればよいですか?
日付の比較ができ、「timedelta」もあることがわかりますが、現在の時刻(datetime.now()から)が指定された時刻よりも早いか、同じか、遅いかを確認するのに苦労しています(例:午前8時)日付に関係なく。
できません特定の時点(「今」など)を未修正の繰り返しイベント(毎日午前8時)と比較します。
現在がtoday's 8amの前か後かを確認できます。
>>> import datetime
>>> now = datetime.datetime.now()
>>> today8am = now.replace(hour=8, minute=0, second=0, microsecond=0)
>>> now < today8am
True
>>> now == today8am
False
>>> now > today8am
False
datetime
オブジェクトのtime()
メソッドを使用して時刻を取得できます。これは、日付を考慮せずに比較に使用できます。
>>> this_morning = datetime.datetime(2009, 12, 2, 9, 30)
>>> last_night = datetime.datetime(2009, 12, 1, 20, 0)
>>> this_morning.time() < last_night.time()
True
Datetime.datetimeオブジェクトを直接比較できます
例えば:
>>> a
datetime.datetime(2009, 12, 2, 10, 24, 34, 198130)
>>> b
datetime.datetime(2009, 12, 2, 10, 24, 36, 910128)
>>> a < b
True
>>> a > b
False
>>> a == a
True
>>> b == b
True
>>>
ロジャー・パテに触発された:
import datetime
def todayAt (hr, min=0, sec=0, micros=0):
now = datetime.datetime.now()
return now.replace(hour=hr, minute=min, second=sec, microsecond=micros)
# Usage demo1:
print todayAt (17), todayAt (17, 15)
# Usage demo2:
timeNow = datetime.datetime.now()
if timeNow < todayAt (13):
print "Too Early"
依存関係を追加したり、datetimeを使用したりせずにこれを実行する別の方法は、単純に時間オブジェクトの属性で計算を行うことです。時間、分、秒、ミリ秒、タイムゾーンがあります。非常に単純な比較では、時間と分で十分です。
d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second
信じられないほど単純なユースケースがない限り、これを行うことはお勧めしません。タイムゾーンの認識または日付の認識が必要な場合は、datetimeを使用する必要があります。
日時には比較機能があります
>>> import datetime
>>> import time
>>> a = datetime.datetime.now()
>>> time.sleep(2.0)
>>> b = datetime.datetime.now()
>>> print a < b
True
>>> print a == b
False