web-dev-qa-db-ja.com

Arrowのタイムスタンプの違い

Arrowに2つのタイムスタンプ間の時間差を返すにはどうすればよいですか?

これが私が持っているものです:

_difference = arrow.now() - arrow.get(p.create_time())
print(difference.hour)
_

p.create_time()は、現在実行中のプロセスの作成時刻のタイムスタンプです。

戻り値:

_AttributeError: 'datetime.timedelta' object has no attribute 'hour'
_

編集:3つの形式すべての合計時間を必要としない、残りとして必要です。 「3日、72時間、4596分」ではなく「3日、4時間、36分」

8
Sweepyoface

文字列からarrowタイプにフォーマットされた2つの日付が与えられます。

>>> date_1 = arrow.get('2015-12-23 18:40:48','YYYY-MM-DD HH:mm:ss')
>>> date_2 = arrow.get('2017-11-15 13:18:20','YYYY-MM-DD HH:mm:ss')
>>> diff = date_2 - date_1

違いは datetime.timedelta データ型です。

>>> print type(diff)
<type 'datetime.timedelta'>

そして結果:

>>> print diff
692 days, 18:37:32

D days, H hours, M minutes, S secondsになるようにフォーマットするには、日を個別に取得し、divmod関数を使用して他の情報を取得します。

>>> days = diff.days # Get Day 
>>> hours,remainder = divmod(diff.seconds,3600) # Get Hour 
>>> minutes,seconds = divmod(remainder,60) # Get Minute & Second 

結果は次のようになります。

>>> print days, " Days, ", hours, " Hours, ", minutes, " Minutes, ", seconds, " Second"
692  Days,  18  Hours,  37  Minutes,  32  Second
10
OShadmon