web-dev-qa-db-ja.com

Python時間の比較

Pythonで時間を比較するにはどうすればよいですか?

日付の比較ができ、「timedelta」もあることがわかりますが、現在の時刻(datetime.now()から)が指定された時刻よりも早いか、同じか、遅いかを確認するのに苦労しています(例:午前8時)日付に関係なく。

77
Steve Jay

できません特定の時点(「今」など)を未修正の繰り返しイベント(毎日午前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
104
Roger Pate

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
54
Pär Wieslander

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
>>> 
9
Kimvais

ロジャー・パテに触発された:

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"
4
AndrewR

依存関係を追加したり、datetimeを使用したりせずにこれを実行する別の方法は、単純に時間オブジェクトの属性で計算を行うことです。時間、分、秒、ミリ秒、タイムゾーンがあります。非常に単純な比較では、時間と分で十分です。

d = datetime.utcnow()
t = d.time()
print t.hour,t.minute,t.second

信じられないほど単純なユースケースがない限り、これを行うことはお勧めしません。タイムゾーンの認識または日付の認識が必要な場合は、datetimeを使用する必要があります。

1
Thomas Dignan

日時には比較機能があります

>>> import datetime
>>> import time
>>> a =  datetime.datetime.now()
>>> time.sleep(2.0)
>>> b =  datetime.datetime.now()
>>> print a < b
True
>>> print a == b
False
1
luc