在Python中比较Unix时间戳
我的应用程序需要比较两个Unix时间戳之间的差异,并返回真或假。简单来说,如果用户在尝试评分的一天或一周内已经评分,那么这个函数就返回假。我担心这样做可能不太符合Python的风格,感觉像是重新发明轮子。请问在Python 2.5中有没有现成的库可以帮助我更好地实现这个功能呢?
import time
def is_allowed(time_rated, duration):
durations={'day': 86400, 'week': 604800}
if duration in durations and isinstance(time_rated, int):
time_difference = int(time.time()) - time_rated
if time_difference > durations[duration]:
return True
else:
return False
return False
1 个回答
2
不,你做得很好,不过你可以直接返回 >
比较的结果,它已经给你一个布尔值(真或假)。这里也没必要把 time.time()
的浮点数转换成整数:
def is_allowed(time_rated, duration):
durations = {'day': 86400, 'week': 604800}
if duration in durations and isinstance(time_rated, int):
time_difference = time.time() - time_rated
return time_rated > durations[duration]
return False
你可以进一步简化,默认 duration
为 float('inf')
,这样就省去了一个 if
判断:
def is_allowed(time_rated, duration):
if not isinstance(time_rated, int):
return False
duration = {'day': 86400, 'week': 604800}.get(duration, float('inf'))
return time.time() - time_rated > duration
如果出现以下情况,这个会返回 False
:
time_rated
不是一个整数duration
不是'day'
或'week'
(因为没有数字会大于float('inf')
)。time_rated
小于86400秒(一天)或604800秒(一个星期),这取决于duration
。