8

私はpythonを使用しており、2つの時間の差を計算したいと考えています。

実際には、ログイン時間とログアウト時間の差を計算するシナリオがありました。たとえば、組織では勤務時間に特定の制限があるため、ユーザー9:00 AMが朝にログインし、夕方にログアウトした場合6:00 PM、計算する必要があります彼がオフィスに滞在した時間(9 hours現在のシナリオ)ですが、これをPythonで実行したいので、ログイン時間とログアウト時間の差を計算するという上記の概念を達成する方法を教えてください。

4

4 に答える 4

20
>>> start = datetime.datetime(year=2012, month=2, day=25, hour=9)
>>> end = datetime.datetime(year=2012, month=2, day=25, hour=18)
>>> diff = end - start
>>> diff
datetime.timedelta(0, 32400)
>>> diff.total_seconds()
32400
>>> diff.total_seconds() / 60 / 60
9
>>> 
于 2013-02-25T13:11:06.467 に答える
5

このタスクにはdivmodを使用します

>>> start = datetime.datetime.utcnow()
>>> end = datetime.datetime.utcnow()
>>> divmod(end - start, 60)
(0, 2.454) # (minutes, seconds)

divmod が与える

于 2013-02-25T13:51:29.137 に答える
2

私の意見では、@ Fabianの答えはおそらく最高です。しかし、これを必要以上に難しくしていませんか?

日、月、年ごとに計算する必要がありますか?

これを生成している場合、timesec 表現を使用する方が簡単ではないでしょうか?

ユーザーがログインすると:

user_login_time = time.time()

ユーザーが再度アクセスした場合:

time_difference = time.time() - user_login_time

次に、time_difference が XXXX 秒を超えているかどうかを確認しますか? ここで、ユーザーが XX 分またはxx時間ログインしていないかどうかを確認するだけだと思いますか?

それ以外の場合、時間の日付文字列の解析を検討している場合、またはデータで他の時間/日付関数を実行する必要がある場合は、@ Fabian の回答が最適であることを強調します。

また、この方法を使用する場合は、時間の定数を作成するか、コメントを付けて、読みやすくすることも強調します。

ただし、ユーザーが過去 30 分間にオンになっているかどうかを確認するだけの場合は、こちらの方が簡単かもしれません。

于 2013-02-25T13:57:07.287 に答える
2

そもそも時間を表すために間違ったクラスを使用しています。

> import datetime
> print datetime.datetime.now() - datetime.datetime(2013, 1, 1)
55 days, 14:11:06.749378

返されるオブジェクトはtimedelta. しかし、違いはもちろんdatetimeオブジェクト間で計算されます。

于 2013-02-25T13:12:05.557 に答える