我正在使用python,并想计算两次之间的差异。
实际上我有一个场景来计算登录和注销时间之间的差异,例如在组织中,工作时间有一些特定的限制,所以如果用户9:00 AM
在早上登录,如果他在晚上注销6:00 PM
,我们需要计算他在办公室呆了多长时间(9 hours
在目前的情况下),但我想在 python 中执行此操作,所以谁能告诉我如何实现上述计算登录和注销时间差异的概念?
>>> 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
>>>
使用divmod完成此任务
>>> start = datetime.datetime.utcnow()
>>> end = datetime.datetime.utcnow()
>>> divmod(end - start, 60)
(0, 2.454) # (minutes, seconds)
divmod 会给
您首先使用了错误的类来表示时间。
> import datetime
> print datetime.datetime.now() - datetime.datetime(2013, 1, 1)
55 days, 14:11:06.749378
返回的对象是一个timedelta
. 但是差异当然是在datetime
对象之间计算的。
在我看来@Fabian 的回答可能是最好的。但我们是否让这变得比必须的更困难?
需要按日、月、年计算吗?
如果您正在生成它,那么仅使用 timesec 表示会不会更容易?
当用户登录时:
user_login_time = time.time()
当用户重访时:
time_difference = time.time() - user_login_time
然后查看time_difference是否在XXXX秒以上?现在我假设您只是要检查用户是否没有登录 XX 分钟或 xx 小时?
否则,我会强调@Fabian 的答案将是最好的,如果您正在查看解析时间日期字符串,或者需要对数据执行其他时间/日期函数。
我还要强调,如果你使用这种方法,为时间制作常量,或者确保对它们进行评论,以使其更具可读性。
但是,如果您只是想了解用户是否在过去 30 分钟内一直在线,这可能会更容易。