比较python中的unix时间戳

时间:2014-03-14 11:25:01

标签: python time unix-timestamp duration

我的应用程序需要比较两个unix时间戳之间的差异并返回True或False。总之,如果用户在尝试评级的一天或一周内评级,则该函数返回false。我担心这可能不是非常pythonic,我可能重新发明了轮子。在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 个答案:

答案 0 :(得分: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