计算python中两次之间的差异

时间:2013-02-25 13:07:24

标签: python time

我正在使用python,并希望计算两次之间的差异。

实际上我有计算登录和注销时间之间差异的方案, 例如,在组织中,工作时间有一些特定的限制,所以 如果用户在早上9:00 AM登录,并且他在晚上6:00 PM退出, 我们需要计算他在办公室呆的时间(在当前场景中是9 hours),但我想在python中这样做,所以任何人都可以让我知道如何实现上述计算的概念登录和注销时间之间的区别?

4 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:4)

使用divmod执行此任务

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

divmod会给出

答案 2 :(得分:2)

在我看来,@ Fabian的回答可能是最好的。但是,我们是否比现在更困难?

您需要按日,月,年计算吗?

如果你正在生成这个,那么使用timesec表示会不会更容易吗?

当用户登录时:

user_login_time = time.time()

当用户重新访问时:

time_difference = time.time() - user_login_time

然后检查time_difference是否高于XXXX秒?现在我假设你要检查用户是否还没有登录XX分钟或xx小时?

否则,我会强调@ Fabian的答案是最好的,如果您正在查看解析时间日期字符串,或者需要对数据执行其他时间/日期函数。

我还要强调,如果你使用这种方法,为时间制作常量,或者确保对它们进行评论,以使其更具可读性。

但是如果您只是想在过去30分钟内找出用户是否已经开启,那么这可能会更容易。

答案 3 :(得分:1)

您使用错误的类来表示时间。

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

返回的对象是timedelta。但差异当然是在datetime个对象之间计算的。