在Python中比较Unix时间戳

2 投票
1 回答
6018 浏览
提问于 2025-04-17 22:17

我的应用程序需要比较两个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

你可以进一步简化,默认 durationfloat('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

撰写回答