python 确定时间范围的最佳方法

标签 python datetime python-2.7 range

请原谅一个新手问题,但我的代码中有以下片段:

timePeriod = '7'
timeDiff = today - dateLast
if timeDiff.days > 90:
    timePeriod = '180'
elif timeDiff.days > 30:
    timePeriod = '90'
elif timeDiff.days > 7:
    timePeriod = '30'
# Use timePeriod in call...

而且它的效率似乎非常低。必须有一种更好的方法使用日期时间库来分配 timePeriod,但我还没有找到。部分问题在于代码过于通用,搜索答案会产生数千个不相关的结果。我考虑过:

timePeriod = '180' if timeDiff.days > 90 else '90' if timeDiff.days > 30 else... 

但这并没有利用我在其他地方看到的 python 的强大功能。

这里有我没有看到的明显的“正确”解决方案吗?或者我原来的解决方案“足够好”,我不应该搞乱它?

非常感谢!

最佳答案

向 J.F. Sebastian 致敬,他为我指出了这个方向。对于任何对我采用的解决方案感兴趣的人:

from bisect import bisect
...
periods = [0, 7, 30, 90, 180]
timeDiff = (today - dateLast).days
timePeriod = str(periods[bisect(periods[:-1], timeDiff)])

这是针对 timeDiff 的所有正值进行测试([:-1] 将结果限制为“180”,防止超出范围引用)。

关于python 确定时间范围的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238004/

相关文章:

python - 在 IronPython 中使用 win32service 模块

MySQL NOW() 似乎可以正确地与我的机器上的本地日期时间进行比较,但在部署时却不能

arrays - 将 5 个二维数组沿对角线垂直堆叠以构建整个二维数组

列表列表中的 Python 函数参数

java - 调号在 Python 中有效,但在 Java 中不行吗?

python - CI 中的 datetime.strptime 失败

python - 将 utc 时间字符串转换为 unix 时间戳

python - 如何在Python中向整数添加尾随零?或者如何在 python 中的任何整数后面添加零?

python - 为什么 `joblib.delayed` 不能用作装饰器?

python - 在 Windows 上安装 curses .whl 包