8

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

实际上我有一个场景来计算登录和注销时间之间的差异,例如在组织中,工作时间有一些特定的限制,所以如果用户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

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

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