63

特定のPython日時オブジェクトがX時間またはX分より古いかどうかを確認したいと思います。私は次のようなことをしようとしています:

if (datetime.now() - self.timestamp) > 100
# Where 100 is either seconds or minutes

これにより、タイプエラーが発生します。

Pythonで日時比較を行う適切な方法は何ですか?私はすでにWorkingWithTimeを見ましたが、これは近いですが、正確には私が望むものではありません。通常のint比較を実行できるように、datetimeオブジェクトを秒単位で表示したいだけだと思います。

日時のベストプラクティスのリストを投稿してください。

4

7 に答える 7

110

datetime.timedeltaクラスを使用します。

>>> from datetime import datetime, timedelta
>>> then = datetime.now() - timedelta(hours = 2)
>>> now = datetime.now()
>>> (now - then) > timedelta(days = 1)
False
>>> (now - then) > timedelta(hours = 1)
True

あなたの例は次のように書くことができます:

if (datetime.now() - self.timestamp) > timedelta(seconds = 100)

また

if (datetime.now() - self.timestamp) > timedelta(minutes = 100)
于 2008-09-24T23:44:27.837 に答える
5

違いを、作成したタイムデルタと比較します。

if datetime.datetime.now() - timestamp > datetime.timedelta(seconds = 5):
    print 'older'
于 2008-09-24T23:42:01.757 に答える
5

別:

if (datetime.now() - self.timestamp).total_seconds() > 100:

self.timestamp が日時インスタンスであると仮定します

于 2012-05-11T06:14:38.880 に答える
1

次のように、返されたオブジェクトの「日」属性と「秒」属性の組み合わせを使用して、答えを把握できます。

def seconds_difference(stamp1, stamp2):
    delta = stamp1 - stamp2
    return 24*60*60*delta.days + delta.seconds + delta.microseconds/1000000.

常に正の秒数が必要な場合は、回答にabs()を使用してください。

タイムスタンプが過去何秒であるかを調べるには、次のように使用できます。

if seconds_difference(datetime.datetime.now(), timestamp) < 100:
     pass
于 2008-09-24T23:40:43.400 に答える
0

2つの日時オブジェクトを減算して、それらの違いを見つけることができます。POSIXタイムスタンプの解析に
使用できます。datetime.fromtimestamp

于 2008-09-24T23:35:26.547 に答える
0

そのようです:

# self.timestamp should be a datetime object
if (datetime.now() - self.timestamp).seconds > 100:
    print "object is over 100 seconds old"
于 2008-09-24T23:45:28.240 に答える